如何从PHP数组中删除重复值?
当前回答
array_unique()函数的替代方法。
使用蛮力算法
//[1]这个数组包含重复的项
火柴美元=[“乔治”、“梅尔文chelsy”梅尔文”、“乔治”,“史密斯”];
//[2]新数组的容器,不包含任何重复项
$arr = [];
//[3]获取复制数组的长度,并将其设置为用于for循环的var len
$len = count($matches);
//[4]如果匹配数组键($i)当前循环迭代不可用 //[4]数组$arr然后推送匹配的当前迭代键值[$i] //[4]到数组arr。
(我= 0;我美元 If (array_search($匹配[$i], $arr) === false){ array_push (arr美元,$ matches [$ i]); } } //打印数组$arr。 print_r (arr); / /结果:数组 ( [0] => jorge [1] => melvin [2] =>切尔西 史密斯 )
其他回答
有多种方法可以做到这一点,如下所示
//first method
$filter = array_map("unserialize", array_unique(array_map("serialize", $arr)));
//second method
$array = array_unique($arr, SORT_REGULAR);
使用元素(array_unique(数组)美元);
Array_unique:用于唯一数组 Array_values:用于索引
根据数组的大小,我发现
$array = array_values( array_flip( array_flip( $array ) ) );
可以比array_unique快。
我们可以很容易地使用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 = array (1,4,2,1,7,4,9,7,5,9);
$unique = array();
foreach($array as $v){
isset($k[$v]) || ($k[$v]=1) && $unique[] = $v;
}
var_dump($unique);
输出-
array(6) {
[0]=>
int(1)
[1]=>
int(4)
[2]=>
int(2)
[3]=>
int(7)
[4]=>
int(9)
[5]=>
int(5)
}