2016-07-28 4 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, тогда мне нужно удалить total_shipping_charge из второго и последующего массивов с одинаковым идентификатором. Как я могу это сделать в PHP?FInding дублирующее значение в массиве PHP

+1

Покажите нам, что вы попробовали – Epodax

+1

Возможно, вы захотите провести некоторое исследование циклов foreach в php. – Martijn

+0

Посмотрите на 'array_reduce (массив $ array, callable $ callback)' и функции типа 'function (mixed $ carry, mixed $ item) use (& $ myGlobal) {}' для обратного вызова – JustOnUnderMillions

ответ

0

Для этого я бы использовал array_walk.

Во-первых, вы хотите создать функцию обратного вызова, которая проверяет, является ли идентификатор уже сталкивался, и сбрасывает 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 по ссылке, так что он может добавить любые встреченные идентификаторы, и принимает $entry по ссылке, чтобы он мог отменить его член.

Затем просто вызовите массив по массиву.

$found_ids = array(); 
array_walk($arr, 'shipping_charge_walk', $found_ids); 
Смежные вопросы