2016-01-30 81 views
0

我有以下数组,如果日期相同,我想增加数量。如何增加php中具有相同数组元素的值?

Array ( 
       [0] => Array ([date] => 2016-02-02 [quantity] => 2) 
       [1] => Array ([date] => 2016-02-04 [quantity] => 1) 
       [2] => Array ([date] => 2016-02-05 [quantity] => 1) 
       [3] => Array ([date] => 2016-02-02 [quantity] => 1) 
       [4] => Array ([date] => 2016-02-03 [quantity] => 1) 
       [5] => Array ([date] => 2016-02-02 [quantity] => 2) 
       [6] => Array ([date] => 2016-02-03 [quantity] => 2) 
       [7] => Array ([date] => 2016-02-04 [quantity] => 2) 
    ) 
    for example if 0 index having date 2016-02-02 and quantity 2,and same like 3rd index having same date but different quantity like wise 5th index. Now i want to add only the quantity if date are same and store into new array as 

Array ( 
      [0] => Array ([date] => 2016-02-02 [quantity] => 5) 
      [1] => Array ([date] => 2016-02-04 [quantity] => 3) 
      [2] => Array ([date] => 2016-02-05 [quantity] => 1) 
      [4] => Array ([date] => 2016-02-03 [quantity] => 3) 
      ) 

请解释一下如何在php中这样做。

回答

0

尝试这种方式只需使用foreach

$sum = array(); 

foreach ($array as $item) { 
    if (!isset($sum[$item['date']])) $sum[$item['date']] = 0; 
    $sum[$item['date']] += $item['quantity']; 
} 

print '<pre>'; 
print_r($sum); 

OR 使用array_reduce()

$sum = array_reduce($array, function($result, $item) { 
    if (!isset($result[$item['date']])) $result[$item['date']] = 0; 
    $result[$item['date']] += $item['quantity']; 
    return $result; 
}, array()); 

    print '<pre>'; 
    print_r($sum); 
+0

感谢lot..Its工作良好。 – Raja

+0

@Raja,很高兴为你效力,祝你好运 –

0

可以使用array_search();内置的功能在某些方面

一个简单的例子:

<?php 
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red'); 

$key = array_search('green', $array); // $key = 2; 
$key = array_search('red', $array); // $key = 1; 
?> 
0

您可以使用此逻辑以上的任务。

foreach($arrayname as $key=>$value) 
    { 
     foreach($arrayname as $key1=>$value1) 
     { 
      if($value['date']==$value1['date']&&$key!=$key1) 
      { 
       $value['quantity']=$value['quantity']+$value1['quantity']; 
       unset($arrayname[$key]); 
      } 
     } 
    } 
相关问题