PHP Array_Sum для многомерного массива

Если у меня есть многомерный массив в PHP, например …

[0] => Array ( [url] => http://domain1.com [domain] => domain1.com [values] => Array ( [character_length] => 25 [word_count] => 7 ) ) [1] => Array ( [url] => http://domain2.com [domain] => domain2.com [values] => Array ( [character_length] => 30 [word_count] => 7 ) 

Как я могу объединить их для производства ….

  [0] => Array ( [url] => *can be anything* [domain] => *can be anything* [values] => Array ( [character_length] => 55 [word_count] => 14 ) ) 

Просто сделайте простой foreach на всех элементах и ​​суммируйте значения:

 $values = array( 'character_length' => 0, 'word_count' => 0 ); foreach ($array as $item) { $values['character_length'] += $item['values']['character_length']; $values['word_count'] += $item['values']['word_count']; } 

Я не думаю, что есть встроенная функция, которая позволит вам суммировать значения многомерного массива. Однако, это способ сделать это, используя функцию лямбда-стиля.

Предположим, что это ваш массив:

  [items] => Array ( [0] => Array ( [ID] => 11 [barcode] => 234334 [manufacturer] => Dell [model] => D630 [serial] => 324233 [current_value] => 1100.00 ) [1] => Array ( [ID] => 22 [barcode] => 323552 [manufacturer] => Dell [model] => D630 [serial] => 234322 [current_value] => 1500.00 ) ) 

Вы можете создать функцию, с помощью которой вы могли бы передавать значения:

 $array_value_sum = create_function('$array,$key', '$total = 0; foreach($array as $row) $total = $total + $row[$key]; return $total;'); 

И затем используйте его так:

 echo "Total Current Value" . $array_value_sum($obj['items'], 'current_value'); 

Вы можете сделать это, используя функции array_sum () и array_map (), как показано ниже:

 $totalCharacterLength = array_sum(array_map(function($item) { return $item['values']['character_length']; }, $totalCharacterLength)); $totalWordCount = array_sum(array_map(function($item) { return $item['values']['word_count']; }, $totalWordCount));