假设我有两个数组如下:
$array1 = array(1, 3, 5);
$array2 = array('x'=> 1, 'y'=> 2, 'z'=> 5);
如何以最有效和最恰当的方式检查两个阵列是否完全相同,并且它不关心 * $ array2 的键名。
我想创建一个函数,如果值完全相同则返回true;如果值和元素数量不同,则返回false。
感谢您的时间和阅读。
答案 0 :(得分:4)
在最简单的情况下,您可以使用array_diff
。它会忽略第二个数组中的键,但也会忽略值的顺序。如果数组相等,它将返回一个空集:
if (count(array_diff($array1, $array2)) == 0) {
// equal
您也可以在从第二个中删除密钥后直接比较数组:
if ($array1 == array_values($array2)) {
这将另外比较所包含值的顺序。
答案 1 :(得分:3)
array_values($array1) === array_values($array2)
假设数组具有相同的顺序。
答案 2 :(得分:1)
试试这个
$array1 = array(1, 3, 5);
$array2 = array('x'=> 1, 'y'=> 2, 'z'=> 5);
$array2 = array_values($array2);
echo $array1 == $array2 ? 'true' : 'false';
答案 3 :(得分:0)
<?php
$array1 = array ("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array ("a" => "green", "yellow", "red");
$result = array_diff($array1, $array2);
if(count($result) == 0)
{
.......
}
?>
答案 4 :(得分:0)
array_diff将为您完成这项工作:
<?php
$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);
if(empty($result)){
// arrays contain the same values!
}
?>
答案 5 :(得分:0)
创建一个包含数组的类,并使该类实现Comparable接口,例如http://php.net/manual/language.oop5.interfaces.php#69467