-3

さて、質問を投稿するのは 2 回目ですが、最初の質問で大成功を収めたので、また行きます。
0,2,5,0,1のような5つの値を含む8つの他の配列で満たされた配列があります(値も固定されていません)。私がする必要があるのは、配列 (1,2,3,4,5)に、最初の配列に格納した 8 つの配列のそれぞれを掛けることです。
これは私が持っているものです。コードは私が持っているボタンから値を取得し、それらを配列に格納します:

$filename = "Results.txt";
$lines = file($filename);

$q1 = $_POST['q1']; //stored value between 1-5
$q2 = $_POST['q2'];
$q3 = $_POST['q3'];
$q4 = $_POST['q4'];
$q5 = $_POST['q5'];
$q6 = $_POST['q6'];
$q7 = $_POST['q7'];
$q8 = $_POST['q8'];

$qN = 1;  //question number
$newLines = '';
$values = array("1", "2", "3", "4", "5");
$total = array();
    foreach($lines as $line) {

        $line = trim($line);  //remove excess newlines etc.
        $lineArr = explode(',',$line);  //split line into array by commas
        $index = ${'q'.$qN}-1; //zero based

    if (isset($lineArr[$index])){
        $lineArr[$index]++;  //add to position by one vote.
        $total = array_sum($lineArr);
    $newLines .= implode(',',$lineArr) . "\r\n";
    $qN++;
}

//write contents back to file.<br/>
file_put_contents($filename, $newLines);



これが私が持っているものです。かなり明確であることを願っていますが、計算された値を取得して、最初の配列の各行の合計で割る必要があります。これが十分に明確に説明されていることを願っています。また、値がデータベースにロードされた場合にどれほど優れているかを理解していますが、残念ながらそれは私が必要としているものではありません。ありがとう!

4

1 に答える 1

0

私があなたを正しく理解しているなら、あなたは次の2つの配列を取りたいと思っています-

$q1 = array(0,1,2,2,4);
$values = array(1,2,3,4,5);

そしてそれらを掛けます -

$q1 * $values

取得するため -

$result1 = array(0,2,6,8,20);

これをする -

まず、$q#変数を変更します-

$q1 = $_POST['q1'];
$q2 = $_POST['q2'];
...
$q7 = $_POST['q7'];
$q8 = $_POST['q8'];

配列に -

$q[1] = $_POST['q1'];
$q[2] = $_POST['q2'];
...
$q[7] = $_POST['q7'];
$q[8] = $_POST['q8'];

次に、ネストされたforループを使用します-

$result = array();  // Creates a Results array
for($i=0;$i<count($q);$i++){   //loops through number of questions. '$i<count($q)' makes it so you can do less (ie. 'q[5]') or more (ie. 'q[14]') without having to change the for loop
    for($j=0;$j<count($values);$j++){   //loops through number of values in your $values array. '$i<count($values)' makes it so you can do less (ie. 'array(1,2,3)') or more  (ie. 'array(1,2,3,4,5,6)') without having to change the for loop
          $result[$i+1][$j] = $q[$i+1][$j]*$values[$j];}  // create array $result[1] = array(#,#,#,#,#), etc.
}

この PHPFiddle を例として確認できます。http://phpfiddle.org/main/code/45a-6j0

これにより、次のような結果が得られます-

$q[1] = array(4,5,2,0,5)
$q[2] = array(5,1,0,0,1)
$q[3] = array(1,4,2,0,0)
$q[4] = array(4,5,0,0,4)
$q[5] = array(2,2,3,4,0)
$q[6] = array(5,4,3,2,0)
$q[7] = array(2,1,5,4,2)
$q[8] = array(4,4,3,5,5)

Results
$result[1] => array(4,10,6,0,25)
$result[2] => array(5,2,0,0,5)
$result[3] => array(1,8,6,0,0)
$result[4] => array(4,10,0,0,20)
$result[5] => array(2,4,9,16,0)
$result[6] => array(5,8,9,8,0)
$result[7] => array(2,2,15,16,10)
$result[8] => array(4,8,9,20,25)
于 2012-12-12T22:51:00.207 に答える