2015-09-14 82 views
0

如何求和数组的相同值?数组求和元素的相同值?

$arr = [ 
    ['id' => 1, 'qty' => 100, 'name' => 'a'], 
    ['id' => 1, 'qty' => 100, 'name' => 'a'], 
    ['id' => 2, 'qty' => 100, 'name' => 'b'] 
]; 

成为:

$arr = [ 
    ['id' => 1, 'qty' => 200, 'name' => 'a'], 
    ['id' => 2, 'qty' => 100, 'name' => 'b'] 
]; 

我一直在尝试,但返回

[ 1=>['qty'=>200], 2=>['qty'=>100] ]

我一直在尝试,但返回

for($i=0; $i<count($cok);$i++){ 
     $item_id = $cok[$i]['id']; 
     $quantity = $cok[$i]['quantity']; 
     if (isset($new_items[$item_id])) { 
      $new_items[$item_id] = ['quantity' => $new_items[$item_id]['quantity'] + $quantity]; 
     } else { 
      $new_items[$item_id] = ['quantity' => $quantity]; 
     } 
    } 
+0

您是否尝试过的东西? – Rizier123

+0

foreach()循环+基础数学 –

+0

您可以使用存储唯一键的映射 – Atri

回答

0

简单馅饼(:

<?php 
$arr = array(
    array('id' => 1, 'qty' => 100, 'name' => 'a'), 
    array('id' => 1, 'qty' => 100, 'name' => 'a'), 
    array('id' => 2, 'qty' => 100, 'name' => 'b') 
); 

$new_arr = array(); 
foreach($arr AS $item) { 
    if(isset($new_arr[$item['id']])) { 
    $new_arr[$item['id']]['qty'] += $item['qty']; 
    continue; 
    } 

    $new_arr[$item['id']] = $item; 
} 

$arr = array_values($new_arr); 

var_dump($arr); 
0

潜入我viper

而且就地片断,正好返回您需要:

<? 
$arr = array(
    array('id' => 1, 'qty' => 100, 'name' => 'a'), 
    array('id' => 1, 'qty' => 100, 'name' => 'a'), 
    array('id' => 2, 'qty' => 100, 'name' => 'b') 
); 

$ids = array(); 
foreach ($arr as $i => $subarray) { 
    if (!($remove_from_array = array_key_exists($subarray['id'], $ids))) { 
     $ids[$subarray['id']] = 0; 
    } 
    $ids[$subarray['id']] += $subarray['qty']; 
    if ($remove_from_array) { 
     unset($arr[$i]); 
    } 
} 
foreach ($arr as &$subarray) { 
    $subarray['qty'] = $ids[$subarray['id']]; 
} 

print_r($arr); 
相关问题