Я создаю набор массивов со следующим циклом:
$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.
… слишком медленно: /