1
說我有在PHP兩個複雜嵌套的數組,像這樣的:如何檢查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
並比較結果,但我並不想修改任何一個操作數,這看起來像是可能有一個我不知道的簡單單行解決方案。那裏有什麼嗎?
複製數組,進行排序並進行比較。這樣,你仍然有原始的 –
是的 - 這是那些「默認」的數字指標,可以幫助你。否則,'$ a == $ b'可以正常工作,而不必關心訂單。 –
$ a == $ b在上述情況下實際上是錯誤的,因爲x和y鍵是相反的,並且z和q鍵在y內反轉。 –