Intereting Posts
Динамически создавать и заполнять входное радио с помощью PHP Как установить высоту таблицы в mpdf print_r return BLANK PAGE PHP bind_params с нулевым добавить css 3 фильтра изображений в php Как сопоставить любое слово в String с регулярным выражением в PHP PHP: обработка специальных символов с помощью iconv if ($ _ FILES ! = "") запускается, если файлы, не запускаются, если нет головной боли в файлах Как отправить объект json с помощью Http.post (Angular 2) (сторона php-сервера) PHP, анализирующий пространство имен georss с помощью simpleXML MySQL несколько порядков (тип вложенных) php регулярное выражение для преобразования строки, за которой следует число, в несколько строк, за которыми следует одна из цифр Сессия заканчивается, даже если я работаю, время сеанса, Ajax и Symfony2 Подсказка типа Php не согласуется с интерфейсами и абстрактными классами? Как создать установщик для веб-сайта. PHP mysql

Проверьте, имеют ли два массива одинаковые значения

[2,5,3] [5,2,3] 

Они равны, потому что они имеют одинаковые значения, но не в том же порядке. Могу ли я узнать, что без использования цикла foreach с in_array ()? Я не думаю, что это будет эффективно.

 sort($a); sort($b); if ($a==$b) {//equal} 

Это немного поздно, но в надежде, что это будет полезно:

Если вы уверены, что массивы содержат только строки или оба содержат только целые числа, то array_count_values($a) == array_count_values($b) имеет лучшую временную сложность. Однако ответ пользователя1844933 более общий.

Если вы не хотите сортировать массивы, а просто хотите проверить равенство, независимо от порядка значений, используйте http://php.net/manual/en/function.array-intersect.php так:

 $array1 = array(2,5,3); $array2 = array(5,2,3); if($array1 === array_intersect($array1, $array2) && $array2 === array_intersect($array2, $array1)) { echo 'Equal'; } else { echo 'Not equal'; } 

Прибытие на эту вечеринку поздно. У меня был тот же вопрос, но я не хотел сортировать, что было прямым ответом, который, как я знал, будет работать. Я придумал этот простой однострочный вкладыш, который работает только для массивов уникальных значений :

 $same = ( count( $a ) == count( $b ) && !array_diff( $a, $b ) ) 

Это также примерно в 5 раз быстрее, чем опция сортировки. Не то, чтобы это было особенно медленным, поэтому я бы сказал, что это больше о ваших личных предпочтениях и о том, что вы считаете более понятным. Лично я бы предпочел не сортировать.

Edit: Спасибо Ray за то, что это работает только с массивами с уникальными значениями.

 $array1 = array(2,5,3); $array2 = array(5,2,3); $result = array_diff($array1, $array2); if(empty($result)) { echo "Both arrays are equal."; } else { echo "Both arrays are different."; }