如何检查两个关联的php数组的值是否相等?

时间:2012-10-04 19:35:06

标签: php arrays

  

可能重复:
  php compare two associative arrays

我有两个PHP数组

$arr1 = array ([0] => apple, [1] => banana);
$arr2 = array ([banana] => banana, [apple] => apple);

在我的网络应用程序中,我不知道命令是什么以及这些数组中有多少元素。此外,一个数组使用数字作为键,而另一个数组使用键=值。

如何检查$ arr1的值是否等于$ arr2的值?

非常感谢你的帮助

2 个答案:

答案 0 :(得分:1)

使用array_values将两个数组的所有值提取到数字键控数组中。然后是一些排序/唯一,以确保一切都在相同的顺序和相等的测试。

答案 1 :(得分:1)

因为他们有不同的钥匙

$arr1 = array (0 => "apple", 1 => "banana");
$arr2 = array ("banana" => "banana", "apple" => "apple");

您可以使用array_diff

if(!array_diff($arr1, $arr2))
{
    // They are the same 
}

您可以使用array_intersect

if(count($arr1) == count(array_intersect($arr1, $arr2)))
{
      // They are the same ;
}

您可以使用数组array_filter

if(array_filter($arr2,function($var)use($arr1){return !in_array($var,$arr1);}))
{
     // They are the same ;
}

您可以使用array_values

$arr2 = array_values($arr2);
sort($arr1);sort($arr2); //sort to make sure they are in the same position 

if($arr1 === $arr2)
{
    // They are the same
}