如何检查PHP关联数组是否相等,忽略键排序?

时间:2012-05-24 23:24:10

标签: php associative-array json

假设我在PHP中有两个复杂的嵌套数组,如下所示:

$a = array(
    "x" => array(4, 5, 6),
    "y" => array("z" => "foo", "q" => "bar")
    );
$b = array(
    "y" => array("q" => "bar", "z" => "foo"), 
    "x" => array(4, 5, 6)
    );

(在这种情况下,它们是从不同来源解码的JSON数据)。假设内容可以任意嵌套,但不包含任何循环引用。

检查它们是否相等是最直接的方法,忽略按键排序?例如,上面两个应该相等。但是,如果$b["x"]array(4, 6, 5),则不会。{/ p>

我可以递归ksort并比较结果,但我真的不想修改任何一个操作数,这似乎可能有一个我不知道的简单的单行解决方案。那里有什么东西吗?

1 个答案:

答案 0 :(得分:2)

最好的方法就是你已经提到了。但是你忘记了一件事。

  1. 复制数组
  2. 对数组进行排序
  3. 比较2
  4. 一样吗?完善。你还有原版。