php数组比较函数array_diff问题

<?php$a=array(1,1);$b=array(0,1,2);var_dump(array_diff($a,$b));?>为什么这两个数组比较出来竟然是array... <?php
$a = array(1,1);
$b = array(0,1,2);
var_dump(array_diff($a, $b));
?>

为什么这两个数组比较出来竟然是array(0) {
},也就是说是一样的??
求一个保险的对比两个数组元素的方法....不需要管下标和元素顺序,但是元素出现的次数需要一致
展开
 我来答
hunterDream
推荐于2016-07-15
知道答主
回答量:8
采纳率:0%
帮助的人:7.2万
展开全部
如果你想比较两个数组是否相同的话,可以这样比较
$a = array(1,1);
$b = array(0,1,2);
if( $a==$b ){
echo 'same';
}else{
echo 'different';
}
追问
我当然知道==这个操作符,但是这个太简陋了,不满足我的需求

比如我要(0,1,2)和(1,0,2)相等
这个操作符就不行
追答
你需要排除顺序的话,用sort()
$a = array(0,1,2);sort($a);
$b = array(1,0,2);sort($b);
if( $a==$b ){
echo 'same';
}else{
echo 'different';
}
帐号已注销
2013-06-05 · TA获得超过312个赞
知道小有建树答主
回答量:472
采纳率:0%
帮助的人:203万
展开全部
你这是啊,array_diff()返回的是差集数组,输出就是array(0)了,你在写个3就看出来了
更多追问追答
追问
也就是说他只判断$a中的元素在$b中有没有出现,而且还是忽略重复元素的,那有没有自带的不忽略重复元素的比较数组的函数??
我能想到的不自己写for循环判断的方法就只有
return count(array_merge(array_diff($a, $b), array_diff($b,$a)));
这个办法了....
但是总感觉这样效率不高
追答
你是求交集吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友690c81e14
2013-06-05 · TA获得超过635个赞
知道小有建树答主
回答量:680
采纳率:0%
帮助的人:668万
展开全部
结果是对的(空数组)
也就是从a中除去在b中出现过的元素,无论出现多少次
追问
但是$b[0]=0和$b[2]=2这两个元素在a中没有啊,这不算??
这函数的算法到底是什么样的啊?
追答
没有的就不理,只去除共有的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式