Согласно этой странице .
ПРИМЕЧАНИЕ: Принятый ответ работает для ассоциативных массивов, но не работает должным образом с индексированными массивами (объяснено ниже),Если вы хотите сравнить любой из них, используйте это решение.Кроме того, эта функция может не работать с многомерными массивами (из-за природы функции array_diff).
Тестирование двух индексированных массивов, элементы которых находятся в разном порядке, например, с ошибками $a == $b
или $a === $b
:
<?php
(array("x","y") == array("y","x")) === false;
?>
Это потому, что приведенное выше означает:
array(0 => "x", 1 => "y")
против array(0 => "y", 1 => "x")
.
Чтобы решить эту проблему, используйте:
<?php
function array_equal($a, $b) {
return (
is_array($a)
&& is_array($b)
&& count($a) == count($b)
&& array_diff($a, $b) === array_diff($b, $a)
);
}
?>
Добавлено сравнение размеров массивов (предложено super_ton), так как это может улучшить скорость.