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


当前回答

我没有使用任何函数。

$arr = array("1", "2", "3", "4", "5", "4", "2", "1");

$len = count($arr);
for ($i = 0; $i < $len; $i++) {
  $temp = $arr[$i];
  $j = $i;
  for ($k = 0; $k < $len; $k++) {
    if ($k != $j) {
      if ($temp == $arr[$k]) {
        echo $temp."<br>";
        $arr[$k]=" ";
      }
    }
  }
}

for ($i = 0; $i < $len; $i++) {
  echo $arr[$i] . " <br><br>";
}

其他回答

我们可以很容易地使用arar_unique ($array);删除重复的元素 但是这个方法的问题是元素的索引不是按顺序的,如果以后在其他地方使用会引起问题。

Use

$arr = array_unique($arr);
$arr = array_values($arr);
print_r($arr);

Or

$arr = array_flip($arr);
$arr = array_flip($arr);
$arr = array_values($arr);
print_r($arr);

第一次翻转,翻转键值对,从而将具有相似键(即最初的值)的元素组合在一起。

第二次翻转还原所有键值对。最后,array_value()设置每个值的key从0开始。

注意:不能用于具有预定义键值对的关联数组

如果你关心性能并且数组很简单,可以使用:

array_keys(array_flip($array));

它比array_unique快很多倍。

这是一个很好的方法。可能要确保它的输出又回到一个数组。现在只显示最后一个唯一值。

试试这个:

$arrDuplicate = array ("","",1,3,"",5);

foreach (array_unique($arrDuplicate) as $v){
  if($v != "") { $arrRemoved[] = $v; }
}
print_r ($arrRemoved);

它可以通过函数我做了三个函数复制返回数组中重复的值。

第二个函数只返回那些在数组中不重复的值,第三个和完整的函数返回所有值,但不重复,如果任何值被重复,它将其转换为单个;

function duplicate($arr) {
    $duplicate;
    $count = array_count_values($arr);
    foreach($arr as $key => $value) {
        if ($count[$value] > 1) {
            $duplicate[$value] = $value;
        }
    }
    return $duplicate;
}
function single($arr) {
    $single;
    $count = array_count_values($arr);
    foreach($arr as $key => $value) {
        if ($count[$value] == 1) {
            $single[$value] = $value;
        }
    }
    return $single;
}
function full($arr, $arry) {
    $full = $arr + $arry;
    sort($full);
    return $full;
}
$a = array(1, 2, 3, 4); 
$b = array(1, 6, 5, 2, 9); 
$c = array_merge($a, $b);
$unique = array_keys(array_flip($c));
print_r($unique);