По http://php.net/manual/en/language.operators.array.php:Требует ли равенство массива PHP в том же порядке?
$a == $b Equality TRUE if $a and $b have the same key/value pairs.
$a === $b Identity TRUE if $a and $b have the same key/value pairs in the same order and of the same types.
Как таковой, я ожидал бы эти два массива, чтобы иметь равенство, но они этого не делают.
$a1=array('a','b');
$a2=array('b','a');
echo(($a1==$a2)?'equal':'not equal');
Я мог бы отсортировать массивы сначала, и они имеют как равенство, так и идентичность.
Я неверно истолковал руководство по PHP? Равномерное равенство массива PHP требует элементов в одном порядке?
EDIT. Ответы на вопросы отвечали на вопрос. Возможные обходные пути включают следующее. Хотя это не является частью моего первоначального вопроса, любые рекомендации по наилучшему способу реализации будут оценены по достоинству.
<?php
$a1=array('a','b');
$a2=array('b','a');
echo((($a1==$a2)?'equal':'not equal').'<br>');
echo(((array_diff($a1, $a2) === array_diff($a2, $a1))?'equal':'not equal').'<br>');
sort($a1);
sort($a2);
echo((($a1==$a2)?'equal':'not equal').'<br>');
?>
ВЫВОД:
not equal
equal
equal
может быть, если вы отсортированы их первым, прежде чем сравнивать их (не пробовал, но, похоже, это первое, что пришло в голову) [для тех, кто не знает, как - http://php.net/manual/en/array.sorting.php] – Jonathan
Да , сортировка будет работать. Но так ответ Лаури (она позже удалила его). Я поправлю свое оригинальное сообщение для справки другого. – user1032531