Данный способ сортировки массива поможет, когда не получается получить отсортированную выборку из базы данных, или например когда выборка обсчитывается.
Сейчас я покажу пример сортировки состава футбольной команды.
Состав нужно отсортировать по амплуа.
Вратарь > Защитник > Полузащитник > Нападающий
Как видно сортировка по убыванию или возрастанию по любому полю не подойдет.
<?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