Сортировка в цикле php
Сортировка массивов в php: ksort, asort и прочие sort’ы
Поговорим о сортировке массивов.
Более подробную информацию и примеры вы всегда можете найти в документации по функциям сортировки.
Допустим у нас есть массив
Он неправильно отсортирован, как видите ключи (1,2,3) и значения (виноград, арбуз, банан) идут не по порядку. Давайте это исправим:
Сортировка массива по ключу
Сортировка массива по значению
Свои способы сортировки
Если предложенные способы сортировки вам не подходят, то можно создать свой способ сортировки ключей и значений массивов. Для этого есть 3 функции uasort, uksort и usort. С их помощью мы можем задать свою callback функцию, которая будет сравнивать элементы между собой и определять какой из них «больше» и какой «меньше».
Давайте рассмотрим как они работают напримере функции uasort, которая сравнивает значения с сохранением ключей.
Применить нашу новую функцию можно так:
Сохранение ключей означает, что каждый ключ как бы привязан к своему значению.
Если сортировка не дает ожидаемый результат, то изучите флаги сортировки. По умолчанию используется обычный тип сортировки SORT_REGULAR
Флаги типа сортировки:
Флаг сортировки передается в функцию сортировки, например так:
Сортировка многомерных массивов
Создадим функцию, которая нам поможет в сортировке массивов
Пример работы этой функции array_orderby() :
Если вам нужно что-то совсем уж специфическое при сортировки многомерных массивов
Можете создать и другие callback функции сортировки самостоятельно.
Массивы на «стероидах»
Часто работаете с массивами? Тогда вам понравится это расширение для работы с коллекциями.
Рассмотрим несколько примеров.
Простая сортировка чисел:
Сортировка по одной «колонке» ассоциативного массива:
Сортировка по нескольким аттрибутам одновременно:
Вы также можете использовать свои функции сортировки при работе с коллекциями:
Коллекции позволяют работать с массивами как в Laravel и функции этого замечательного инструмента далеко не ограничиваются сортировкой.
Изучите документацию и вы влюбитесь в коллекции.