2016-07-28 11 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を持つ2番目以降の配列から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がすでに遭遇されているかどうかをチェックコールバック関数を作成したい、それが持っている場合、それは追加できるように、これは、参照することにより$found_idsとり、

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']; 
    } 
} 

のようなものをtotal_shipping_chargeの設定を解除しますそれに遭遇したidsがあれば、$entryを参照してそのメンバーを設定解除することができます。

次に、配列の配列ウォークを呼び出します。

$found_ids = array(); 
array_walk($arr, 'shipping_charge_walk', $found_ids); 
関連する問題