AAA Главная
Примеры PHP Примеры JavaScript Примеры Ajax Примеры CSS,HTML

Сортировка многомерного массива по заданному полю

Как ни странно, но среди встроенных функций 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'];
});

.

© Copyright 2008-2017 by KDG