2013-06-27 130 views
0

我有一个数组:php |阵列合并

Array 
(
    [0] => Array 
     (
      [qty] => 2 
      [id] => 1 
      [name] => Name 1 
      [sku] => Model 1 
      [options] => Color: <em>Black (+10$)</em>. Memory: <em>32GB (+99$)</em>. 
      [price] => 209.00 
     ) 

    [1] => Array 
     (
      [qty] => 1 
      [id] => 1 
      [name] => Name 1 
      [sku] => Model 1 
      [options] => Color: <em>Black (+10$)</em>. Memory: <em>16GB</em>. 
      [price] => 110.00 
     ) 

    [2] => Array 
     (
      [qty] => 1 
      [id] => 3 
      [name] => Name 2 
      [sku] => Model 2 
      [options] => 
      [price] => 100.00 
     ) 
) 

第一步是要找到相同的ID。如果相同的id存在转换数组。 是否有可能获得输出数组(如果id相同,则删除一个并将qty添加到另一个)?

Array 
    (
     [0] => Array 
      (
       [qty] => 3 // 2+1 
       [id] => 1 
       [name] => Name 1 
       [sku] => Model 1 
       [options] => Color: <em>Black (+10$)</em>. Memory: <em>32GB (+99$)</em>. 
       [price] => 209.00 
      ) 

     [1] => Array 
      (
       [qty] => 1 
       [id] => 3 
       [name] => Name 2 
       [sku] => Model 2 
       [options] => 
       [price] => 100.00 
      ) 
    ) 

谢谢!

+1

那么价格和选择呢? –

+0

如果你不关心其他属性,使用'foreach'循环应该很容易。你有什么尝试,有什么问题? – Barmar

回答

1
$result = array(); 
foreach ($input as $subarray) { 
    $id = $subarray['id']; 
    if (isset($result[$id])) { // Same ID 
    $result[$id]['qty'] += $subarray['qty']; // Add quantities 
    } else { 
    $result[$id] = $subarray; // New ID, put in results 
    } 
} 
$result = array_values($result); // Convert from associative array to indexed 
+0

谢谢。合适的解决 – user889349