将多个数组放在一个大的关联数组中
Put multiple arrays in one large associative array
我正在使用以下循环创建一组数组:
$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 这将帮助我将值合并和相加,但我不确定当数组未分配给变量时如何处理。我正在尝试做的事情是可行的还是我做错了?
不要让它变得复杂,只需检查结果数组是否已经包含具有该键的元素,如果没有则对其进行初始化,否则添加它。例如
(在您的循环中添加此代码):
if(!isset($result[$resultArr[0]]))
$result[$resultArr[0]] = $resultArr[1];
else
$result[$resultArr[0]] += $resultArr[1];
那么你就有了你想要的数组:
print_r($result);
你可以这样做
$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 中的值作为初始值。
...太慢了:/
我正在使用以下循环创建一组数组:
$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 这将帮助我将值合并和相加,但我不确定当数组未分配给变量时如何处理。我正在尝试做的事情是可行的还是我做错了?
不要让它变得复杂,只需检查结果数组是否已经包含具有该键的元素,如果没有则对其进行初始化,否则添加它。例如
(在您的循环中添加此代码):
if(!isset($result[$resultArr[0]]))
$result[$resultArr[0]] = $resultArr[1];
else
$result[$resultArr[0]] += $resultArr[1];
那么你就有了你想要的数组:
print_r($result);
你可以这样做
$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 中的值作为初始值。
...太慢了:/