我想在PHP中比较两个数组

时间:2012-03-29 09:05:16

标签: php arrays

假设我有两个数组如下:

$array1 = array(1, 3, 5);
$array2 = array('x'=> 1, 'y'=> 2, 'z'=> 5);

如何以最有效和最恰当的方式检查两个阵列是否完全相同,并且它不关心 * $ array2 的键名。

我想创建一个函数,如果值完全相同则返回true;如果值和元素数量不同,则返回false。

感谢您的时间和阅读。

6 个答案:

答案 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