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


How to check if PHP associative arrays are equal, ignoring key ordering?

假设我在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)他们就不会。

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

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

  1. 复制数组
  2. 对数组进行排序
  3. 比较 2

一样?完善。而且你还有原件。