2013-09-17 2 views
0

У меня есть многомерный массив так:Сумма вложенных элементов многомерного массива

Array(
    [0] => Array(
    [data] => Array(
     [value] => 10, 
     [beta] => 0.5 
    ), 
    [name] => 'bob' 
), 
    [1] => Array(
    [data] => Array(
     [value] => 13, 
     [beta] => 0.6 
    ), 
    [name] => 'Tim' 
), 
    [2] => Array(
    [data] => Array(
     [value] => 19, 
     [beta] => 0.3 
    ), 
    [name] => 'Chris' 
) 
) 

Есть ли способ суммировать value элемент каждого суб-суб-массив без необходимости перебирать родительский массив ? Я использую CakePHP, поэтому было интересно, поможет ли утилита Hash.

+0

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

+0

Хорошо существует функция ['array_sum'] (http://php.net/manual/en/function.array-sum.php) для одномерных массивов, поэтому вполне возможно, что существует метод для многомерных массивов – harryg

+0

'array_sum' имеет внутри внутри цикл, поэтому он выполняет итерацию. Вы можете сделать то же самое для многомерных массивов с помощью 'array_reduce', но это также повторится и будет выглядеть гораздо менее знакомым, чем прямой' foreach'. – Jon

ответ

3

Вы можете достичь этого с:

$mResult = array_sum(array_map(function($rgItem) 
{ 
    return $rgItem['data']['value']; 
}, $rgData)); 
Смежные вопросы