Наш чат в Telegram для обмена идеями, проектами, мыслями, людьми в сфере ИТ г.Ростова-на-Дону: @it_rostov

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

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

.