2016-07-28 76 views
-4
 
[0] => Array 
     (
      [id] => 9 
      [order_address_id] => 9 
      [created] => 2015-12-17 12:24:20 
      [order_status] => dispatched 
      [total_discount] => 
      [total_shipping_charge] => 60 
      [s_state] => NY 
      [b_state] => NY 
      [order_id] => 9 
      [p_name] => Product 1 
      [qty] => 1 
      [price] => 475 
     ) 

    [1] => Array 
     (
      [id] => 9 
      [order_address_id] => 9 
      [created] => 2015-12-17 12:24:20 
      [order_status] => dispatched 
      [total_discount] => 
      [total_shipping_charge] => 60 
      [s_state] => MA 
      [b_state] => MA 
      [order_id] => 9 
      [p_name] => Product 2 
      [qty] => 1 
      [price] => 349 
     ) 

我想查找是否重複具有相同ID的數組,然後必須從具有相同ID的第二個和後續數組中刪除total_shipping_charge。我怎樣才能在PHP中做到這一點?在PHP數組中發現重複值

+1

向我們展示您試用過的產品 – Epodax

+1

您可能想對PHP中的foreach循環做一些研究。 – Martijn

+0

查看'array_reduce(array $ array,callable $ callback)'和'function(mixed $ carry,mixed $ item)use(&$ myGlobal){}'的函數來獲取回調函數 – JustOnUnderMillions

回答

0

我會用array_walk這個。

首先,您要創建,如果已經遇到的ID檢查的回調函數,並取消設置total_shipping_charge如果有,像

function shipping_charge_walk(&$entry, $key, &$found_ids) 
{ 
    if (in_array($entry['id'], $found_ids)) { 
    unset($entry['total_shipping_charge']); 
    } else { 
    $found_ids[] = $entry['id']; 
    } 
} 

這需要$found_ids引用,以便它可以追加任何遇到的id,並通過引用取得$entry,以便它可以取消它的成員。

然後,只需在陣列上調用數組就可以了。

$found_ids = array(); 
array_walk($arr, 'shipping_charge_walk', $found_ids);