Сортировка пользовательских массивов php только для 4 первых элементов

0

Мне нужно отсортировать массив, в котором первые четыре элемента будут определены вручную, а остальные - в алфавитном порядке. Как я могу это достичь?

    $array = array('navigation' => array('label' => 'nav'), 
                   'sponsors' => array('label' => 'spo'),
                   'points' => array('label' => 'poi'),
                   'direction' => array('label' => 'dir'),
                   'time' => array('label' => 'tim'),
                   'statistics' => array('label' => 'sta'),
                   'height' => array('label' => 'hei'),
                   'opacity' => array('label' => 'opa'),
                   'saturation' => array('label' => 'sat'),
                   'size' => array('label' => 'size'),
                   'attribute' => array('label' => 'att')
                   );

Первые четыре элемента должны быть размером, непрозрачностью, временем, точками, а остальные должны быть в алфавитном порядке.

РЕДАКТИРОВАТЬ

Запрошенные комментарии, чтобы показать мои попытки. Я попытался сортировать его с помощью функции uasort, но он вообще не работает. Также я понятия не имею, почему.

    $order = array('size', 'opacity', 'time', 'points');

    uasort($array, function ($a, $b) use ($order) {
        $pos_a = array_search($a, $order);
        $pos_b = array_search($b, $order);
        return $pos_a - $pos_b;
    });
  • 1
    Вы пробовали что-нибудь? (Извлеките первые 4 элемента в другой массив, отсортируйте оба массива и добавьте остальную часть массива к массиву с 4 элементами)
  • 0
    Вам следует показать попытку выполнения задачи, и мы можем помочь вам в этом. Мы не делаем работу за вас здесь.
Показать ещё 3 комментария
Теги:
arrays

1 ответ

2
Лучший ответ

Вы можете удалить четыре элемента из своего массива (при необходимости сделайте копию) и отсортировать его по ключу:

$temp = array();

foreach (array('size', 'opacity', 'time', 'points') as $key) {
    $temp[$key] = $array[$key];
    unset($array[$key]);
}

ksort($array);

$result = array_merge($temp, $array);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню