PHP

2016-04-08 11 views
-3

kullanarak anahtar değer başına dizi verileri yinelenen nasıl kaldırılır Bir yardıma ihtiyacım var. Php kullanarak diziden anahtar değeri başına yinelenen veri kümesini kaldırmak gerekir. Aşağıdaki verileri açıklıyorum.PHP

order_id i herhangi bir veri kümesini kaldırmak gerekir bu durumda [order_id] => nurrr6lov iki seti vardır yinelenen data.Here herhangi seti kaldırmalısınız aynı ise ihtiyacım yukarıdaki dizinin itibaren
Array 
     (
      [id] => 494 
      [1] => nurrr6lov 
      [order_id] => nurrr6lov 
      [2] => 126 
      [pro_data_id] => 126 
      [3] => 1 
      [quantity] => 1 
      [4] => 2.01 
      [usp] => 2.01 
      [5] => 0 
      [discount] => 0 
      [6] => 2.01 
      [final_price] => 2.01 
      [7] => 2.01 
      [prod_tot_price] => 2.01 
      [8] => ordered 
      [delstatus] => ordered 
     ) 

    [1] => Array 
     (
      [order_id] => nurrr6lov 
      [pro_data_id] => 110 
      [quantity] => 1 
      [usp] => 13.33 
      [discount] => 10 
      [final_price] => 12.01 
      [prod_tot_price] => 12.01 
      [delstatus] => ordered 
     ) 

    [2] => Array 
     (
      [id] => 492 
      [1] => td3baf6d7 
      [order_id] => td3baf6d7 
      [2] => 127 
      [pro_data_id] => 127 
      [3] => 1 
      [quantity] => 1 
      [4] => 2.23 
      [usp] => 2.23 
      [5] => 10 
      [discount] => 10 
      [6] => 2.01 
      [final_price] => 2.01 
      [7] => 2.01 
      [prod_tot_price] => 2.01 
      [8] => ordered 
      [delstatus] => ordered 
     ) 
) 

, bana yardım edin.

+0

verilerin kurdu? Sadece bu elementin tüm verileriyle ana dizi elemanı ('[order_id] => nurrr6lov')? – mitkosoft

+0

Ben bu veri dizinini kesin olarak kaldırmam gerekir. "Nurrr6lov" ifadesi, verilerin 0 ya da 1. indeksini kaldırabildiği birçok kez arrlanır. – subhra

cevap

1

PHP'de bir dizi yinelenen anahtarlar izin vermediğini gerçeğine göre, Böyle bir durumda bu "özelliği" kullanabiliriz. array_walk ve array_values işlevleri kullanarak
Çözüm:

$filtered = []; 

// $arr is your initial array 
array_walk($arr, function($v) use (&$filtered){ 
    $filtered[$v['order_id']] = $v; 
}); 

$filtered = array_values($filtered); 
print_r($filtered); // will output an array of elements with unique 'order_id' values 
0

Diziyi, gördüğünüz herhangi bir kimliği saklayarak süzün ve daha sonra bu kimliğin daha önce işlenip işlenmediğini kontrol edin.

$keys = [];  
$uniqueOrders = array_filter($array, function($o) use (&$keys) { 
    if (isset($o['order_id']) && !in_array($o['order_id'], $keys)) { 
     $keys[] = $o['order_id']; 
     return true; 
    } 
    return false; 
}); 
0

Sen array_key olarak order_id ayarlayabilirsiniz:

$withoutDublicates = array(); 
foreach ($arr as $data) { 
    $withoutDublicates[$data['order_id']] = $data; 
} 

ilk kaydını isterseniz:

$withoutDublicates = array(); 
foreach ($arr as $data) { 
    if (empty($withoutDublicates[$data['order_id']])) { 
     $withoutDublicates[$data['order_id']] = $data; 
    } 
}