Рано или поздно необходимость сортировать данные из массива возникает у любого программиста. Будь то вывод данных из базы в алфавитном порядке или сортировка имен файлов по дате последнего изменения, можно осуществить благодаря встроенным php функциям для сортировки данных массива. В данной статье продемонстрирую и объясню в примерах как работают такие функции как: sort(), rsort().
Функция sort(); - Сортировка массива по возрастанию и по алфавиту
Структура:
sort( $Массив, $Флаг );
Функция сортирует заданный ей массив $Массив по возрастанию. Функция предназначена для работы со списками. Списки это обычные массивы, ключи которых начинаются с нуля. Функции можно задать необязательный аргумент $Флаг, который манипулирует тем как именно должно происходить сортировка. Рассмотрим описание аргумента $Флаг:
SORT_REGULAR – Сортировка по умолчанию работы функции
SORT_NUMERIC - Сортировка чисел, по возрастанию
SORT_STRING - Сортировка строк, по алфавиту
Рассмотрим пример, у нас есть массив где хранятся в хаотичном виде данные о количестве пар студента в разные года учебы.
1 2 3 4 5 6 7 8 |
<?php $Leasons = array(83, 100, 72); sort($Leasons); foreach($Leasons as $num) { $palce++; echo "Курс: {$palce} - {$num} пар<br />"; } ?> |
Результат работы скрипта:
1 2 3 |
Курс: 1 - 72 пар Курс: 2 - 83 пар Курс: 3 - 100 пар |
Если бы мы не применили функцию sort(); результат работы был бы следующим:
1 2 3 |
Курс: 1 - 83 пар Курс: 2 - 100 пар Курс: 3 - 72 пар |
Сортировка по алфавиту
Ниже приведен скрипт который сортирует страны их массива по алфавиту, второй аргумент функции ($Флаг) не обязательно ставить, т.к. функция сама поймет, что предстоит работать со строками.
1 2 3 4 5 6 7 |
<?php $Country = array("Россия", "Италия", "Япония", "Армения"); sort($Country); foreach($Country as $name) { echo "{$name}<br />"; } ?> |
Результат работы:
1 2 3 4 |
Армения Италия Россия Япония |
Функция rsort() - Сортировка массива по убыванию
функция rsort(); является алогичной функции sort(); только сортирует массивы по убыванию. рассмотрим структуру синтаксиса:
rsort( $Массив, $Флаг );
Пример для данной функции будет похож на примеры выше приведенные, кроме одного, данные из массива будут отсортированы по убыванию. Создаем массив с призами для тех кто займет 1-е, 2-е и 3-е место в конкурсе.
1 2 3 4 5 6 7 8 |
<?php $Money = array(500, 1200, 2800); rsort($Money); foreach($Money as $num) { $place++; echo "{$place} место - приз: {$num} руб. <br />"; } ?> |
Результат выполнения скрипта:
1 2 3 |
1 место - приз: 2800 руб. 2 место - приз: 1200 руб. 3 место - приз: 500 руб. |