2011-07-30 72 views
2

我想比较两个索引数组,因此两个数组的值相同,但顺序可能不同,例如我尝试这样做,但它不起作用。如何检查两个索引数组是否具有相同的值,即使PHP中的顺序不相同?

实施例1:

$a = array(1,2,3,4,5); 
$b = array(1,2,3,5,4); 
echo ($a == $b) ? 'Match Found' : 'No Match Found'; 
//Returns No Match Found 

实施例2:(试图排序阵列,但它不会排序)

$a = array(1,2,3,4,5); 
$a = sort($a); 
$b = array(1,2,3,5,4); 
$b = sort($b); 
echo ($a === $b) ? 'Match Found' : 'No Match Found'; 
//Returns Match Found 

上面的例子中返回发现匹配,这是因为sort() 1返回,如果我尝试排序索引数组,并且$a$b包含1排序后导致条件为真,这是完全错误的,这个伎俩似乎也不工作,我尝试了很多不同nt排序功能,如asort(),arsort()等,但似乎没有工作。

这是什么解决方法?

谢谢

回答

1

,而不是比较的sort返回值的,你为什么不只是比较阵列,他们已被排序后?

$a = array(1,2,3,4,5); 
sort($a); 
$b = array(1,2,3,5,4); 
sort($b); 
echo ($a == $b) ? 'Match Found' : 'No Match Found'; 

如果数组具有不同的键但数值相同,它们仍将计数为相等。如果这是一个问题,您还必须比较阵列键。

2
$a = array(1,2,3,4,5); 
$b = array(1,3,2,5,3,4); 


if(count($a) == count($b) && count(array_diff($a, $b)) == 0){ 
    echo "A"; 
} 

需要做一个长度检查或上面的两个数组会出来相同。

编辑:更好的解决方案。

相关问题