这可能有点令人困惑,但我会尽我所能解释它。请耐心等待。
我有以下数组:
Array
(
[question1] => 69
[question2] => 36
[question3] => 57
[question4] => 69
[question5] => 58
[question6] => 40
[question7] => 58
)
Array
(
[question1] => 8
[question2] => 6
[question3] => 5
[question4] => 6
[question5] => 7
[question6] => 8
[question7] => 5
)
正如您所看到的,两个数组具有相同的键,但每个键的值不同。
我需要在第二个数组中找到具有相同值的键,因此[question1]
和[question6]
的值都为8
。然后在第一个数组中,我需要将[question1]
和[question6]
的值加在一起,因为它们在第二个数组中具有相似的值。我需要根据第二个数组中的匹配值将第一个数组值加在一起(如果有意义的话)
理想情况下,输出将是另一个看起来像这样的数组:
Array
(
[5] => 115
[8] => 109
[6] => 105
[7] => 58
)
第二个数组的值成为键,第一个数组的相加值之和就是值。
现在我不会在这里挑剔,所以如果我们不能把它变成那种确切的格式,那就没关系了。我只需要能够根据第二个数组中的相似值将第一个数组中的值相加。
我希望这是有道理的。如果没有请评论,我会尽力进一步解释。
答案 0 :(得分:2)
最简单的解决方案是迭代第二个数组。查找第一个数组中的键,如果存在,则将第一个数组中的相应值添加到结果数组中,并使用第二个数组中的值进行索引。
这样的事情:
$array1 = array(
'question1' => 69,
'question2' => 36,
'question3' => 57,
'question4' => 69,
'question5' => 58,
'question6' => 40,
'question7' => 58,
);
$array2 = array(
'question1' => 8,
'question2' => 6,
'question3' => 5,
'question4' => 6,
'question5' => 7,
'question6' => 8,
'question7' => 5,
);
// Compose the desired result here
$result = array();
// Iterate over the second array; its values become keys in the result array
foreach ($array2 as $key => $val) {
// If this is the first time when this value is reached then a corresponding
// value does not yet exists in the result array; add it
if (! isset($result[$val])) {
$result[$val] = 0;
}
// Lookup the key into the first array
if (isset($array1[$key])) {
// If it exists then add its value to the results
$result[$val] += $array1[$key];
}
}
// That's all
print_r($result);