尝试在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;中得到了这些值。我真的不确定如何实现这一点。
我还需要保留我得到的那些单独的数组,以便我可以将用户在表单中选择的选项存储在数据库中。
如果您需要任何其他详细信息,请与我们联系。
答案 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
?>