2014-12-01 3 views
0

Я хочу, чтобы сумма элемента массива имела один и тот же элемент 'Id'. , и я хочу получить новый массив, который не содержит повторяющийся элемент 'id'. Структура массива приведена ниже.Как суммировать значения массива того же идентификатора элемента

Array 
(
    [0] => Array 
     (
      [id] => 693 
      [quantity] => 40 
     ) 

    [1] => Array 
     (
      [id] => 697 
      [quantity] => 10 
     ) 

    [2] => Array 
     (
      [id] => 693 
      [quantity] => 20 
     ) 

    [3] => Array 
     (
      [id] => 705 
      [quantity] => 40 
     ) 

) 

Я хочу, чтобы получить ожидаемый результат

Array 
(
    [0] => Array 
     (
      [id] => 693 
      [quantity] => 60 
     ) 

    [1] => Array 
     (
      [id] => 697 
      [quantity] => 10 
     ) 



    [2] => Array 
     (
      [id] => 705 
      [quantity] => 40 
     ) 

) 
+0

чек здесь 'HTTP://stackoverflow.com/questions/1496682/how-to-sum-values-of-the -array-of-the-same-key' – Gowri

+0

Найдите себя, прежде чем публиковать какие-либо вопросы здесь. – JazyK

+0

@ Gowri, я не хочу целую сумму массива, я хочу, чтобы сумма количества, Когда id равны –

ответ

3

Попробуйте это один

<?php 
$array = array(
     array('id' => 693, 'quantity' => 40), 
     array('id' => 697, 'quantity' => 10), 
     array('id' => 693, 'quantity' => 20), 
     array('id' => 705, 'quantity' => 40), 
     ); 

$result = array(); 
foreach($array as $k => $v) { 
    $id = $v['id']; 
    $result[$id][] = $v['quantity']; 
} 

$new = array(); 
foreach($result as $key => $value) { 
    $new[] = array('id' => $key, 'quanity' => array_sum($value)); 
} 
echo '<pre>'; 
print_r($new); 
?> 

Вы также можете сделать следующее:

<?php 
$final = array(); 
foreach($array as $value) { 
    $id = $value['id']; 
    $filter = array_filter($array, function($ar) { 
     GLOBAL $id; 
     $valueArr = ($ar['id'] == $id); 
     return $valueArr; 
    }); 
    $sum = array_sum(array_column($filter, 'quantity')); 
    $final[$id] = array('id' => $id, 'quantity' => $sum); 
} 
echo '<pre>'; 
print_r($final); 
?> 
Смежные вопросы