我想比较两个索引数组,这样两个数组的值将相同,但顺序可能不同,例如,我尝试这样做,但它根本不起作用。
示例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
,导致条件为真,这是完全错误的,这个技巧似乎也不起作用,我尝试了许多不同的排序函数,如asort()
, arsort()
等,但似乎都不起作用。
这个问题的解决方法是什么?
谢谢
$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";
}
需要做长度检查,否则上面的两个数组会出现相同的结果。
与其比较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';
如果数组有不同的键但值相同,它们仍然被视为相等。如果这是一个问题,您还必须比较数组键。