<?php
$a = array(1,1);
$b = array(0,1,2);
var_dump(array_diff($a, $b));
?>
为什么这两个数组比较出来竟然是array(0) {
},也就是说是一样的??
求一个保险的对比两个数组元素的方法....不需要管下标和元素顺序,但是元素出现的次数需要一致
$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';
}
也就是说他只判断$a中的元素在$b中有没有出现,而且还是忽略重复元素的,那有没有自带的不忽略重复元素的比较数组的函数??
我能想到的不自己写for循环判断的方法就只有
return count(array_merge(array_diff($a, $b), array_diff($b,$a)));
这个办法了....
但是总感觉这样效率不高
你是求交集吧
追问就是判断两个数组是否相等,这样写就判断返回值是不是0,对吗??
追答array_diff(),如果返回值为空,表示两个数组相同,否则就不同,
$flag = array_diff($a,$b);if(empty($flag)){
echo '相同';
}else{
echo '不相同';
}追问
囧rz,我提问里面就是这么写的,但是两个不相同的数组却返回空数组了啊...
也就是从a中除去在b中出现过的元素,无论出现多少次追问
但是$b[0]=0和$b[2]=2这两个元素在a中没有啊,这不算??
这函数的算法到底是什么样的啊?
没有的就不理,只去除共有的