while循环中某些键的数组和

时间:2017-02-13 13:11:25

标签: php

尝试在SO上找到解决方案,我发现了多个相似的问题,但没有一个问题仅限于许多键。

我正在建立一个有一个算法的问卷调查,根据这个问题,根据他们在每个问题答案中得到的分数,它会推荐你们中的三个获胜者。该表有10列: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加起来但是因为我在&#34;和#34;中得到了这些值。我真的不确定如何实现这一点。

我还需要保留我得到的那些单独的数组,以便我可以将用户在表单中选择的选项存储在数据库中。

如果您需要任何其他详细信息,请与我们联系。

1 个答案:

答案 0 :(得分: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
?>