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));
Не связан с StackOverflow