找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1572|回复: 0
打印 上一主题 下一主题

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

[复制链接]

3444

主题

3465

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
11142
跳转到指定楼层
楼主
发表于 2018-2-14 08:27:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            1.可以直接用php的内置函数array_intersect()
array array_intersect ( array $array1 , array $array2 [, array $ ... ] )
array_intersect() 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意键名保留不变。
代码:
[U]复制代码[/U] 代码如下:
"green", "red", "blue");
$array2 = array("b" => "green", "yellow", "red");
$result = array_intersect($array1, $array2);
?>

输出结果:
Array( [a] => green [0] => red)
2.也可以自己写一个算法:
[U]复制代码[/U] 代码如下:
";
$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.还可以这么写:
[U]复制代码[/U] 代码如下:
";
print_r(my_array_intersect($array1, $array2));
echo "";
?>

如果是一维的数组,第三种算法比第一种快点.上述算法都适用于一维的数组,那么多维数组怎么查找相同的元素呢?
思路:可以把多维的数组转化成一维的数组,然后再利用上述算法输出。
代码:
[U]复制代码[/U] 代码如下:
function toarr($arr){ //对数组进行递归,以字符串形式返回
foreach ($arr as $k=>$v){
if (!is_array($v)) {
$str.=$v." ";
}
else{
$str.=toarr($v);
}
}
return $str;
}/*递归函数结束*/

上式把多维数组转化成字符串,然后利用expode函数转化成一维数组即可。
联想一下,数据库返回某一字段重名的值也是这个道理,当然通过sql语句也能够实现。
            
            
您可能感兴趣的文章:
  • JavaBean实现多文件上传的两种方法
  • 从JavaScript的函数重名看其初始化方式
  • java中struts2实现文件上传下载功能实例解析
  • java使用smartupload组件实现文件上传的方法
  • java实现文件上传下载和图片压缩代码示例
  • C#实现保存文件时重名自动生成新文件的方法
  • JavaWeb实现文件上传下载功能实例解析
  • java实现动态上传多个文件并解决文件重名问题
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端