Данный способ сортировки массива поможет, когда не получается получить отсортированную выборку из базы данных, или например когда выборка обсчитывается.
Сейчас я покажу пример сортировки состава футбольной команды.
Состав нужно отсортировать по амплуа.
Вратарь > Защитник > Полузащитник > Нападающий
Как видно сортировка по убыванию или возрастанию по любому полю не подойдет.
<?php $sostav = array( "0" => array( "NAME" => "Агапцев", "MARK" => 22, "ROLE" => "Нападающий" ), "1" => array( "NAME" => "Алфимов", "MARK" => 1, "ROLE" => "Вратарь" ), "2" => array( "NAME" => "Белов", "MARK" => 5, "ROLE" => "Полузащитник" ), "3" => array( "NAME" => "Васильев", "MARK" => 10, "ROLE" => "Защитник" ), "4" => array( "NAME" => "Латынин", "MARK" => 7, "ROLE" => "Нападающий" ), ); ?>
Код функции
<?php $arAmplua = array(); // В этот массив будут собираться значения поля, // по которому сортируем foreach ($sostav as $key => $arr) { $arAmplua[$key] = $arr['ROLE']; //Здесь задается поле по которому сортировать } //Здесь задается массив ключей $arAmplua = array("Вратарь", "Защитник", "Полузащитник", "Нападающий" ); foreach ($arAmplua as $amplua) { foreach ($sostav as $key => $arr) { if ($amplua == $arr['ROLE']) $resultArray[] = $arr; //Отсортированный массив } } $sostav= $resultArray;//Записываем отсортированный массив обратно в основной массив ?> <!--Выводим результат--> <pre><?print_r($sostav)?><pre>
Файл с примером можно скачать по ссылке
sort.php