php过滤数组重复数据 php过滤字符

如何正确实现PHP删除数组重复元素array_unique
(PHP 4 = 4.0.1, PHP 5, PHP 7)
array_unique — 移除数组中重复的值
说明
array array_unique ( array $array [, int $sort_flags = SORT_STRING ] )
array_unique() 接受 array 作为输入并返回没有重复值的新数组 。
注意键名保留不变 。array_unique() 先将值作为字符串排序,然后对每个值只保留第一个遇到的键名,接着忽略所有后面的键名 。这并不意味着在未排序的 array 中同一个值的第一个出现的键名会被保留 。
Note: 当且仅当 (string) $elem1 === (string) $elem2 时两个单元被认为相同 。就是说,当字符串的表达一样时 。第一个单元将被保留 。
参数
array
输入的数组 。
sort_flags
The optional second parameter sort_flags may be used to modify the sorting behavior using these values:
Sorting type flags:
SORT_REGULAR - compare items normally (don't change types)
SORT_NUMERIC - compare items numerically
SORT_STRING - compare items as strings
SORT_LOCALE_STRING - compare items as strings, based on the current locale.
返回值
Returns the filtered array.
更新日志
【php过滤数组重复数据 php过滤字符】版本
说明
5.2.10Changed the default value of sort_flags back to SORT_STRING.
5.2.9Added the optional sort_flags defaulting to SORT_REGULAR. Prior to 5.2.9, this function used to sort the array with SORT_STRING internally.
范例
Example #1 array_unique() 例子
?php
$input = array("a" = "green", "red", "b" = "green", "blue", "red");
$result = array_unique($input);
print_r($result);
?
以上例程会输出:
Array
(
[a] = green
[0] = red
[1] = blue
)
Example #2 array_unique() 和类型
?php
$input = array(4, "4", "3", 4, 3, "3");
$result = array_unique($input);
var_dump($result);
?
以上例程会输出:
array(2) {
[0] = int(4)
[2] = string(1) "3"
}
参见
array_count_values() - 统计数组中所有的值出现的次数
注释
Note: Note that array_unique() is not intended to work on multi dimensional arrays.
php中如何去除数组中的重复值?php
$arr=array(6,3,53,5,3);
$arr2=array();
foreach($arr as$v){
if(!in_array($v,$arr2)){
$arr2[]=$v;
}
}
var_dump($arr2);
?
$arr2即为除掉重复值的结果
过滤掉PHP数组中的重复值的实现代码复制代码
代码如下:
?php
$arrF
=
array();
$arrS
=
array();
$intTotal
=
100;
$intRand
=
10;
for($i=0;
$i
$intTotal;
$i)
{
$arrF[]
=
rand(1,
$intRand);
$arrS[]
=
rand(1,
$intRand);
}
$arrT
=
array_merge($arrF,
$arrS);
$arrRF
=
array();
$intStart
=
time();
foreach($arrT
as
$v)
{
if(in_array($v,
$arrRF))
{
continue;
}
else
{
$arrRF[]
=
$v;
}
}
$intEnd
=
time();
$intTime
=
$intEnd-$intStart;
echo
"With
Continue,Spend
time:$intTimebr/";
$intStart1
=
time();
$arrRS
=
array_unique($arrT);
$intEnd2
=
time();
$intTime2
=
$intEnd2-$intStart1;
echo
"With
array_unique
function,Spend
time:($intTime2)";
echo
"pre";
print_r($arrT);
print_r($arrRF);
print_r($arrRS);
echo
"/pre";
?
在$intTotal比较小的情况下,比如说1000以内,$intRand的取值基本不影响结果,两者执行的时间都差不多 。
测试$intTotal
大于10000时,$intRand取值100时,使用array_unique的效率要高于foreach循环判断 , $intRand=10,两者执行时间一致 。
因此 , 可以得出结论,当数组容量不大,大概在1000以内时 , 使用两者的执行效率差不多 。
当数组容量比较大时(具体应该到什么值,我没有详细测试,感兴趣的可以确定一下这个值),随着$intRand的逐渐增大,array_unique的表现更好,我不使用$intTotal/$intRand这个比值,是因为 , 感觉并不是成比例变化,但是基本会遵循比值越大,array_unique表现越好 。
综上所述,在过滤数组重复值的时候,建议使用array_unuique,数组不大的时候两者效率等同,而array_unique使用当然让你的代码一下子减了好几行,数组容量过大时,函数的表现更好,为什么不用呢?
php如何过滤数组重复值?。?/h2>先用explode()函数分解成数组php过滤数组重复数据 , 然后用array_unique() 函数给数组去重复php过滤数组重复数据,然后用implode()合并成字符串
?php
$str='1|2|1|5|4|2';
$a=explode('|',$str);
$b=array_unique($a);
$c=implode('|',$b);
var_dump($c);
?
php数组去除重复的值?php
$array = array(
array(
'id' = 19,
'title' = '总统套房'
),
array(
'id' = 20,
'title' = '豪华套房'
),
array(
'id' = 21,
'title' = '豪华套房'
),
array(
'id' = 22,
'title' = '总统套房'
),
);
foreach ($array as $key = $value) {
foreach ($value as $k = $v) {
if ($k == 'title') {
$new_arr[] = $v;
}
}
}
$arr = array_unique($new_arr);
echo implode(',', $arr);
?
望采纳 Thx
关于php过滤数组重复数据和php过滤字符的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读