2015-12-04 3 views
-3
Array 
(
    [Item 1] => Array 
     (
      [0] => 8 
      [1] => 5 
      [2] => 4 
     ) 

    [Item 2] => Array 
     (
      [0] => 24 
      [1] => 4 
     ) 

    [Item 3] => Array 
     (
      [0] => 23 
      [1] => 4 
     ) 
} 

Как добавить элементы массива вместе, чтобы они сталиPHP массив элементов Sum

Array 
(
    [Item 1] => Array 
     (
      [0] => 17 
     ) 

    [Item 2] => Array 
     (
      [0] => 28 
     ) 

    [Item 3] => Array 
     (
      [0] => 27 
     ) 
} 

Я ранее использовать array_merge_recursive, чтобы объединить 2 массива тех же ключей вместе, но теперь я хочу добавить свои элементы вместе поэтому они имеют только элемент [0].

Спасибо!

ответ

5

Вы можете использовать array_map и array_sum к достичь своей цели:

$array = array('Item1' => array(1, 3), 'Item2' => array(3, 4)); 

$array = array_map(function($item) { 
    return array_sum($item); 
}, $array); 

echo '<pre>'; 
var_dump($array); 
echo '</pre>'; 

результат будет выглядеть так:

array(2) { 
    ["Item1"]=> 
    int(4) 
    ["Item2"]=> 
    int(7) 
} 

Если вам действительно нужен результат, чтобы быть массивом с суммой элементов, то изменить возвращение к:

return array(array_sum($item)); 
+2

Было бы неплохо, если бы вы объяснили, почему это превосходит другие способы сделать то же самое ... или же вы просто предоставляете бесплатный код, а не образование;) –

2

Может быть, вы можете сделать длинный путь, как этот

foreach($array as $key => $element){ 
    $sum = 0; 
    foreach($element as $value){ 
     $sum += $value; 
    } 
    $result[$key][0] = $sum; 
} 

В принципе, как это вы будете просматривать через каждый элемент массива, и вы будете создавать сумму требуемых элементов

+4

не знал, SO был бесплатный сервис кодирования .. – Naruto

+0

Потому что вы Бесполезный 'т написал ваш код, который вы пробовали, вот почему г-н Наруто не исследовал достаточно мистера @BaokyANewProgramer –

Смежные вопросы