我想比較多維數組,但我不能只使用array_diff_assoc()。我試圖比較的數組都是關聯數組,它們都進行了排序,因此鍵的順序相同。大多數情況下,陣列的結構是相同的。我似乎無法弄清楚如何比較存儲數組的元素,我可以比較擁有一個值的元素就好了別人知道我能做什麼嗎?比較PHP中的多維數組
感謝您的幫助!
我想比較多維數組,但我不能只使用array_diff_assoc()。我試圖比較的數組都是關聯數組,它們都進行了排序,因此鍵的順序相同。大多數情況下,陣列的結構是相同的。我似乎無法弄清楚如何比較存儲數組的元素,我可以比較擁有一個值的元素就好了別人知道我能做什麼嗎?比較PHP中的多維數組
感謝您的幫助!
在array_diff_assoc()的手冊頁上有一個user contributed note,看起來好像它符合你的要求。
目前還不清楚您是要查看它們是否相同,或者實際上是否需要輸出差異。
如果是前者,那麼你可以做到這一點的正確方法,用遞歸函數:
$array1 = array('a' => 1, 'b' => 2, 'c' => array('ca' => 1, 'cb' => array('foo')));
$array2 = array('a' => 1, 'b' => 2, 'c' => array('ca' => 1, 'cb' => array('bar')));
var_dump(arrayEqual($array1, $array2));
function arrayEqual($a1, $a2)
{
if (count(array_diff($a1, $a2)))
return false;
foreach ($a1 as $k => $v)
{
if (is_array($v) && !arrayEqual($a1[$k], $a2[$k]))
return false;
}
return true;
}
或者使用這樣一個完整的黑客:
if (serialize($array1) == serialize($array2))
如果你想只看到如果它們不同(並且沒有什麼特別的不同),你可以嘗試類似於:
return serialize($array1) == seralize($array2);
這會讓你對這兩個數組的平等感到滿足。
創意。我喜歡。 +1 – 2009-07-15 18:41:21
這正是我所需要的。我在閱讀手冊時錯過了,哈哈! – cskwrd 2009-07-15 18:52:23