Регистрация Войти
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Сортировка многомерного массива по заданному полю
Как ни странно, но среди встроенных функций PHP не оказалось готовой для сортировки многомерного массива по полю. Пришлось для своих проектов написать.
Функция сортировки многомерного массива
/** сортирует многомерный массив по полю $field
* @param array &$ar
* @param string $field
* @param bool $desc =true, - по убыванию
* @return bool =true, если успешно
*/
function array_sort(&$ar, $field='id', $desc=false){
return usort($ar, function($a, $b) use($field, $desc) {
if($a[$field] === $b[$field])
return 0;
return ($a[$field] > $b[$field] ? 1 : -1)*($desc?-1:1);
});
}
Если Вам не нужна универсальная фнкция, используйте аналог, который работает в любой версии PHP:
// Сортировка массива работает в старых версиях
usort($array, function($a, $b){
if($a['age'] === $b['age'])
return 0;
return $a['age'] > $b['age'] ? 1 : -1;
});
Или вариант только для PHP 7:
usort($array, function($a, $b){
return $a['age'] <=> $b['age'];
});
.
Прокомментировать/Отблагодарить