1

假设我在 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比较结果,但我真的不想修改任何一个操作数,这似乎有一个我不知道的简单的单行解决方案。外面有什么吗?

4

1 回答 1

2

您已经提到了这样做的最佳方法。但是你忘了一件事。

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

相同?完美的。你仍然有原件。

于 2012-05-24T23:40:21.640 回答