我正在使用以下循环创建一组数组:
$assessmentArr = explode("&", $assessmentData);
foreach($assessmentArr as $data) {
$fullArr = explode("_", $data);
// Break down to only archetype and value
$resultArr = explode("=", $fullArr[2]);
//print_r($resultArr);
}
产生以下结果:
Array
(
[0] => community-support
[1] => 24
)
Array
(
[0] => money-rewards
[1] => 30
)
Array
(
[0] => status-stability
[1] => 15
)
Array
(
[0] => personal-professional-development
[1] => 32
)
Array
(
[0] => community-support
[1] => 9
)
Array
(
[0] => money-rewards
[1] => 12
)
Array
(
[0] => status-stability
[1] => 16
)
Array
(
[0] => personal-professional-development
[1] => 29
)
我需要将这些组合成一个数组,并且[0]
值匹配,我需要将[1]
值加在一起。
所以我希望最终输出类似于:
Array
(
[community-support] => 33
[money-rewards] => 42
[status-stability] => 31
[personal-professional-development] => 61
)
我发现了这个问题:How to merge two arrays by summing the merged values这将有助于我将值合并并添加到一起,但是当阵列没有分配给变量时,我不确定如何解决这个问题。我正在尝试做什么,或者我是否采取了错误的方式?
答案 0 :(得分:2)
不要让它变得复杂,只需检查结果数组是否已经有一个带有该键的元素,如果没有初始化它,否则添加它。 E.g。
(在循环中添加此代码):
echo "<thead>";
echo "<th>My Header 1</th>";
echo "<th>My Header 2</th>";
echo "</thead>";
然后你有你想要的阵列:
if(!isset($result[$resultArr[0]]))
$result[$resultArr[0]] = $resultArr[1];
else
$result[$resultArr[0]] += $resultArr[1];
答案 1 :(得分:0)
你可以这样做
$assessmentArr = explode("&", $assessmentData);
$finalArr = array();
foreach($assessmentArr as $data) {
$fullArr = explode("_", $data);
// Break down to only archetype and value
$resultArr = explode("=", $fullArr[2]);
if(array_key_exists($resultArr[1], $finalArr)){
$finalArr[$resultArr[0]] += $resultArr[1];
}else{
$finalArr[$resultArr[0]] = $resultArr[1];
}
}
首先检查数组中是否已存在该键,如果是,则将该值添加到最终数组中的值。否则,将新索引添加到最终数组,并将resultArr中的值作为初始值。
......太慢了:/