2017-02-13 6 views
1

SOと私が似ている複数の質問が見つかったが、それらのどれも複数のキーに限定されていなかった。whileループ内の特定のキーの配列合計

私は、それぞれの質問回答に得られたポイントに基づいて7人のうち3人の勝者を推薦するアルゴリズムを持ったアンケートを作成しています。テーブルには、ポイント値を保持するid、question_no、answer、および7の列があります。ここで

はコードです:

<?php 
include_once "connect.php"; 

$question = array(); 
$question[1] = mysqli_real_escape_string($con, $_POST['question_01']); 
// the rest of the questions go here 
$question[10] = mysqli_real_escape_string($con, $_POST['question_10']); 

    $i = 0; 
    $array_sum=[]; 
    while ($i < 10){ 
     $i++;  
     $sql = "SELECT * FROM partners WHERE question_no = $i AND answer = '".$question[$i]."'"; 
     $result = mysqli_query($con, $sql); 

     $final_array_1 = array(); 

     while ($row = mysqli_fetch_array($result, MYSQLI_NUM)) 
     { 

     $final_array_1 = $row; 
      $array_sum = array_map(function() { 
       return array_sum(func_get_args()); 
      }, $array_sum, $final_array_1); 
     print_r($final_array_1); 
     echo "<br/>"; 
     } 
} 

これの出力はのようになります。

Array ([0] => 1 [1] => 1 [2] => A [3] => 5 [4] => 5 [5] => 5 [6] => 5 [7] => 5 [8] => 5 [9] => 5) 

Array ([0] => 6 [1] => 2 [2] => B [3] => 0 [4] => 0 [5] => 0 [6] => 8 [7] => 8 [8] => 0 [9] => 0) 

などなど、他の8つのアレイのために。

基本的には、3から9までのすべてのキーの値を追加する必要がありますが、これらの値は「while」で取得しているので、これを達成する方法はわかりません。

私はこれらの個々の配列を保持して、ユーザーがデータベース内のフォームで選択したオプションを保存できるようにする必要もあります。

追加の詳細が必要な場合はお知らせください。

+0

3から9までの配列をループし、別の変数を各キーの値でインクリメントしますか? – ADyson

+0

@ADysonはい。それがアイデアです。 – SporeDev

+0

だから...あなたはforループを作る方法を知っていますか?その後、それは簡単です。 – ADyson

答えて

1

インデックス3から9までの配列をループし、各インデックスの値を合計するだけでよいはずです。

<?php 
include_once "connect.php"; 
$question = array(); 
$question[1] = mysqli_real_escape_string($con, $_POST['question_01']); 
// the rest of the questions go here 
$question[10] = mysqli_real_escape_string($con, $_POST['question_10']); 
$i = 0; 

$sums = array(); //this will hold the sums of all the various indexes 
while ($i < 10) 
{ 
    $i++;  
    $sql = "SELECT * FROM partners WHERE question_no = $i AND answer = '".$question[$i]."'"; 
    $result = mysqli_query($con, $sql); 
    while ($row = mysqli_fetch_array($result, MYSQLI_NUM)) 
    { 
    for ($count = 3; $count <= 9; $count++) { 
     if (!isset($sums[$count]) $sums[$count] = 0; 
     $sums[$count] += $row[$count]; 
    } 
    } 
} 
var_dump($sums); //just for debugging, to show you the totals 
?> 
+0

そして最後の「while」にこれを追加しますか? – SporeDev

+0

データベース内の各行を合計するとします。はい – ADyson

+0

ああ、私は正しく説明していないと思います。同じ配列に値を追加しています。私が意図したことは、元のものよりも次の反復の値を追加することでした。私が値(1,3)を持つ配列を持っていて、次の反復でそれが(5,2)の場合、合計は(6,5)でなくてはなりません。 – SporeDev

関連する問題