PHP输出数组中重名的元素的几种处理方法

2019-11-23 16:00:21来源:爱站网 阅读 ()

新老客户大回馈,云服务器低至5折

我们在PHP的开发工作中,经常需要处理数组中的元素,下面爱站技术频道小编给大家介绍PHP输出数组中重名的元素的几种处理方法,一起来了解下吧。

1.可以直接用php的内置函数array_intersect() array array_intersect ( array $array1 , array $array2 [, array $ ... ] )
array_intersect() 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意键名保留不变。
代码:

?

?

复制代码 代码如下:

?


<?php
$array1 = array("a" => "green", "red", "blue");
$array2 = array("b" => "green", "yellow", "red");
$result = array_intersect($array1, $array2);
?>


输出结果:
Array( [a] => green [0] => red)
2.也可以自己写一个算法:

?

复制代码 代码如下:

?


<?php
function my_array_same($a){
$b = array_unique($a);
$r = array_diff_key($a,$b);
echo "<pre>";
$k=var_dump(array_unique($r));
return $k;
}
$a = array("red", "green", "pink", "red", "yellow","pink", "red");
$r=my_array_same($a);
var_dump(array_unique($r));
?>


输出结果:
array(2) {
[3]=>
string(3) "red"
[5]=>
string(4) "pink"
}
3.还可以这么写:

?

复制代码 代码如下:

?


<?php
function my_array_intersect($arr1,$arr2){
for($i=0;$i<count($arr1);$i++){
$temp[]=$arr1[$i];
}
for($i=0;$i<count($arr1);$i++){
$temp[]=$arr2[$i];
}
sort($temp);
$get=array();
for($i=0;$i<count($temp);$i++){
if($temp[$i]==$temp[$i+1])
$get[]=$temp[$i];
}
return $get;
}
$array1 = array("green", "red", "blue");
$array2 = array("green", "yellow", "red");
echo "<pre>";
print_r(my_array_intersect($array1, $array2));
echo "<pre/>";
?>


如果是一维的数组,第三种算法比第一种快点.上述算法都适用于一维的数组,那么多维数组怎么查找相同的元素呢?

思路:可以把多维的数组转化成一维的数组,然后再利用上述算法输出。

代码:

?

复制代码 代码如下:

?


function toarr($arr){ //对数组进行递归,以字符串形式返回
foreach ($arr as $k=>$v){
if (!is_array($v)) {
$str.=$v." ";
}
else{
$str.=toarr($v);
}
}
return $str;
}/*递归函数结束*/

以上就是爱站技术频道小编分享的PHP输出数组中重名的元素的几种处理方法,看完后你感觉有不懂的地方吗?如果有疑问就请联系js.aizhan.com吧!


原文链接:https://js.aizhan.com/develop/php/10283.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:分享PHP扩展开发经验的步骤

下一篇:详解header跳转和include包含问题