Сортировка элементов массива

116
16 ноября 2020, 10:30

Имеется многомерный массив, выглядит он следующим образом:

$arr = 
[
    'test' => 
    [
        '11', '22'
    ],
    'myArray' => 
    [
        'key 1', 'key 2'
    ],
    'net' => 
    [
        'text 1', 'text 2'
    ]
];

Как мне отсортировать этот массив так, что бы в ответе получилось:

    11
    key 1
    text 1
    22
    key 2
    text 2

Т.е. сначала брать значение (11) с первого ключа первого под массива (test), затем переключиться на 2-й под массив (myArray) к первому ключу (0) и взять оттуда значение (key 1), и тоже самое сделать с 3-м под массивом, и по окончанию выполнить эти действия снова, но на этот раз нужно взять 22 из test и key 2 из myArray и так, с net, до тех пор, пока все ключи не закончатся

Answer 1

Во-первых, это не сортировка, а какой то обход в нужно порядке. В целом такие тройки получить вам поможет обычный array_map

$result = array_map(null, ...array_values($arr));

на выходе получите двумерный массив вида

11,    key 1,    text 1
22,    key 2,    text 2

дальше вы, например, можете обойти его с array_walk_recursive() и как раз получите искомый порядок.
Либо сделать его плоским, например так:

$result = call_user_func_array('array_merge', $result);
Answer 2

Можно конечно использовать тысячу и одну стандартную функция пятьдесят два раза, а можно написать простенький цикл -

$new_arr = [];
for( $i = 0; $i <= 1; $i ++ ) {
    foreach($arr as $k => $v) {
       $new_arr[] = $arr[$k][$i];
    }
}
READ ALSO
Уровни исключений и логирование

Уровни исключений и логирование

Мне нужно разработать систему интеграции с различными информационными системами

134
Передача массива в Twig

Передача массива в Twig

Имеется многомерный массив $categories_arr:

125
многопользовательский сценарий

многопользовательский сценарий

есть блок кода (назовем его $foo->bar() ) который должен выполнится один раз и только один разкак это организовать в многопользовальском сценарии?

86
Платежная система и запись в БД?

Платежная система и запись в БД?

Использую ОктябрьСоздана страница заказа, где собирается вся информация

154