Можно ли использовать многомерный массив в PHP для упорядочения по альтернативным значениям, например, 1/0/1/0/1/0? - PullRequest
1 голос
/ 22 января 2020

Если у вас есть массив PHP:

$args = array(
    'a' => array(
        'order' => 1,
    ),
    'b' => array(
        'order' => 0,
    ),
    'c' => array(
        'order' => 0,
    ),
    'd' => array(
        'order' => 0,
    ),
    'e' => array(
        'order' => 1,
    ),
);

Есть ли способ использовать метод usort (или другой), который может упорядочить его по значению многомерного ключа, но вместо того, чтобы быть "инкрементным" ( 0,0,0,1,1), они будут чередоваться (0,1,0,1,0).

Таким образом, используя приведенный выше массив в качестве примера, желаемый порядок вывода для ключей быть заказанным по альтернативному значению ключа «заказ»:

$args = array(
    'b' => array(
        'order' => 0,
    ),
    'a' => array(
        'order' => 1,
    ),
    'c' => array(
        'order' => 0,
    ),
    'e' => array(
        'order' => 1,
    ),
    'd' => array(
        'order' => 0,
    ),

);

Короче; Ключи теперь упорядочены по значению ключа, называемому «порядок», и имеют альтернативное значение, поэтому они равны: 0, 1, 0, 1, 0.

Я просто не могу понять это!

1 Ответ

2 голосов
/ 22 января 2020

Нет, это невозможно. Порядок означает, что вы можете сравнить два элемента и определить, какой порядок они должны иметь. Ваш запрос не выполняется, когда у вас есть два 1 элемента.

Однако это не означает, что это не может быть выполнено алгоритмически, только то, что сортировка или упорядочение не правильный инструмент для работы.

...