从数组中删除特定的重复键值

问题描述:

我已经搜索并尝试了许多不同的“从数组中删除重复”功能,但没有人为我的情况制定出来。我试图从数组中删除一个特定的重复。从数组中删除特定的重复键值

从下面我想删除“PHASER 4600”的重复。

[0] => Array 
    (
     [id] => 1737 
     [product_name] => PHASER 4200 
     [certification_date] => 3/20/12 
    ) 

[1] => Array 
    (
     [id] => 1738 
     [product_name] => PHASER 4600 
     [certification_date] => 3/20/12 
    ) 

[2] => Array 
    (
     [id] => 1739 
     [product_name] => PHASER 4600 
     [certification_date] => 3/20/12 
    ) 

[3] => Array 
    (
     [id] => 1740 
     [product_name] => PHASER 4700 
     [certification_date] => 3/20/12 
    ) 

[4] => Array 
    (
     [id] => 1741 
     [product_name] => PHASER 4800 
     [certification_date] => 3/20/12 
    ) 
+0

你说你已经尝试了各种东西,但不显示你的工作。请添加一些代码,以便我们提供帮助。关于这个问题,[array_filter()](http://php.net/array_filter)可能会有所帮助。 –

+0

从哪里得到这个数组 – kannan

+0

我相信这是awnsered [这里](http://*.com/questions/307674/how-to-remove-duplicate-values-from-a-multi-dimensional-array-in -php) – Mazaka

你可以把它们放到一个新的数组中,并在你放入它们时检查它是否是重复的。

$newArray = array(); 

foreach ($oldArray as $old) { 
    $found = false; 

    foreach ($newArray as $new) { 
     if ($new['product_name'] == $old['product_name']) { 
      $found = true; 
     } 
    } 

    if (!$found) { 
     array_push($newArray, $old); 
    } 
} 

您可以使用此功能:

function delete_duplicate_name(&$arr, $name){ 
    $found = false; 
    foreach($arr as $key => $elm){ 
     if($elm['product_name'] == $name){ 
      if($found == true) 
       unset($arr[$key]); 
      else 
       $found = true; 
     } 
    } 
} 
delete_duplicate_name($arr, 'PHASER 4600'); 
print_r($arr);