如何从PHP数组中删除重复值?


当前回答

    if (@!in_array($classified->category,$arr)){        
                                    $arr[] = $classified->category;
                                 ?>

            <?php } endwhile; wp_reset_query(); ?>

第一次检查数组中的值,发现相同的值忽略它

其他回答

有多种方法可以做到这一点,如下所示

//first method
$filter = array_map("unserialize", array_unique(array_map("serialize", $arr)));

//second method
$array = array_unique($arr, SORT_REGULAR);
$arrDuplicate = array ("","",1,3,"",5);
 foreach(array_unique($arrDuplicate) as $v){
  if($v != "" ){$arrRemoved = $v;  }}
print_r($arrRemoved);

唯一对我有用的是:

$array = array_unique($array, SORT_REGULAR);

编辑:SORT_REGULAR与原始数组保持相同的顺序。

根据数组的大小,我发现

$array = array_values( array_flip( array_flip( $array ) ) );

可以比array_unique快。

有时候array_unique()不是解决方法, 如果你想获得唯一且重复的道具……

$unique=array("","A1","","A2","","A1","");
$duplicated=array();

foreach($unique as $k=>$v) {

if( ($kt=array_search($v,$unique))!==false and $k!=$kt )
 { unset($unique[$kt]);  $duplicated[]=$v; }

}

sort($unique); // optional
sort($duplicated); // optional

结果

array ( 0 => '', 1 => 'A1', 2 => 'A2', ) /* $unique */

array ( 0 => '', 1 => '', 2 => '', 3 => 'A1', ) /* $duplicated */