手机
当前位置:查字典教程网 >编程开发 >php教程 >PHP输出数组中重名的元素的几种处理方法
PHP输出数组中重名的元素的几种处理方法
摘要:1.可以直接用php的内置函数array_intersect()arrayarray_intersect(array$array1,arra...

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;

}/*递归函数结束*/

上式把多维数组转化成字符串,然后利用expode函数转化成一维数组即可。

联想一下,数据库返回某一字段重名的值也是这个道理,当然通过sql语句也能够实现。

【PHP输出数组中重名的元素的几种处理方法】相关文章:

PHP调用三种数据库的方法(2)

PHP ajax 异步执行不等待执行结果的处理方法

PHP调用三种数据库的方法(1)

PHP文本数据库的搜索方法

PHP遍历数组的方法汇总

PHP实现多线程的两个方法

PHP获取远程图片并保存到本地的方法

php函数重载的替代方法

php输出全球各个时区列表的方法

php对数组内元素进行随机调换的方法

精品推荐
分类导航