php - sort array function
usort($price, 'fun_sort'); // пользовательская сортировка
function fun_sort ($a1, $a2) {
$a11=$a1[2]; // сортируем по индексу массива «2»
$a22=$a2[2];
if($a11>$a22) {return 1;}
else if($a11==$a22) {return 0;}
else {return -1;}
}
/*****************************/
<?php
//usort($mas, 'func') - сортировка на основе пользовательской функции (как и в js – получает два элемента, //сравнивает, в результате должно быть return 1, 0 или -1); ОСОРТИРУЕМ ДНИ НЕДЕЛИ НА КИРИЛЛИЦЕ ("Вторник", //"Среда", "Понедельник") (ОБЫЧНАЯ ASCII-СОРТИРОВКА (ПО АЛФАВИТУ) НЕ ГОДИТСЯ ("Вторник", "Понедельник", //"Среда") :
$den = array("Вторник", "Среда", "Понедельник"); // необходимо отсортировать по общепринятому порядку дней недели
//sort($den); // обычная ascii-сортировка (по алфавиту) не годится ("Вторник", "Понедельник", "Среда")
usort($den, 'den_sort'); // сортировка на основе пользовательской функции
foreach ($den as $denn) { // перебор и вывод отсортированного массива
echo "$denn<br>";
}
function den_sort($a1, $a2)
{ // функция принимает два элемента массива
$mas_den = array(1 => 'Понедельник', 2 => 'Вторник', 3 => 'Среда',
4 => 'Четверг', 5 => 'Пятница', 6 => 'Суббота', 7 => 'Воскресенье'); // зададим массив, индексы которого определяют общепринятый порядок следования дней недели
foreach ($mas_den as $ind => $mas_ind) { // перебор заданного массива и формирование двух переменных, равных индексам (номерам дня недели) для поступивших в функцию элементов
if ($a1 == $mas_ind) {
$a1_key = $ind;
}
if ($a2 == $mas_ind) {
$a2_key = $ind;
}
}
if ($a1_key > $a2_key) {
return 1;
} // необходимый алгоритм возврата
else if ($a1_key == $a2_key) {
return 0;
} else {
return 0;
}
}
?>