Как отсортировать массив по под массиву

    Array
    (
        [0] => Array
            (
                [ID] => 9
                [BOSS] => Array
                    (
                        [0] => Array
                            (
                                [BOSS_FIO] => Пупкин Вася
                                [тут еще ключи]
                            )
    
                        [1] => Array
                            (
                                [BOSS_FIO] => Олегров Олег
                                [тут еще ключи]
                            )
    
                        [2] => Array
                            (
                                [BOSS_FIO] => Виктор Зайцев
                                [тут еще ключи]
                            )
    
                    )
            )
        [1] => Array
            (
                [ID] => 10
                [BOSS] => Array
                    (
                        [0] => Array
                            (
                                [BOSS_FIO] => Кошка мышка
                                [тут еще ключи]
                            )
    
                        [1] => Array
                            (
                                [BOSS_FIO] => Кутузов Вася
                                [тут еще ключи]
                            )
    
                        [2] => Array
                            (
                                [BOSS_FIO] => Лионьтев Михаил
                                [тут еще ключи]
                            )
                    )
            )
    )

Как отсортировать общий массив по ключу BOSS[0][BOSS_FIO], именно первый индекс в BOSS по ключу BOSS_FIO asc, desc.

Пробовал сделать подобное:

usort(
$arOriginalData,
$this->buildSorter('BOSS', $arSortData['sort'])
);

и сама функция buildSorter:

function buildSorterHP($key, $sortOrder)
{
    return function ($a, $b) use ($key, $sortOrder) {
        if ($a[$key][0]['BOSS_FIO'] == '' && $b[$key][0]['BOSS_FIO'] != '') {
            return 1;
        }
        if ($b[$key][0]['BOSS_FIO'] == '' && $a[$key][0]['BOSS_FIO'] != '') {
            return -1;
        }
        if ($sortOrder === 'ASC') {
            return $a[$key][0]['BOSS_FIO'] > $b[$key][0]['BOSS_FIO'];
        } else {
            return $a[$key][0]['BOSS_FIO'] < $b[$key][0]['BOSS_FIO'];
        }
    };
}

Но массив остался прежний.


Ответы (0 шт):