Поместите несколько массивов в один большой ассоциативный массив

Я создаю набор массивов со следующим циклом:

$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 ) 

Я нашел этот вопрос: как объединить два массива путем суммирования объединенных значений, которые помогут мне объединить и добавить значения вместе, но я не уверен, как это сделать, когда массивы не назначены переменной. Является ли то, что я пытаюсь сделать, или я об этом неправильно?

Не делайте это сложным, просто проверьте, имеет ли массив результатов уже элемент с этим ключом, и если он не инициализируется, добавьте его в противном случае. Например

(Добавьте этот код в свой цикл):

 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 как значение inital.

… слишком медленно: /