Имеется многомерный массив, выглядит он следующим образом:
$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
, до тех пор, пока все ключи не закончатся
Во-первых, это не сортировка, а какой то обход в нужно порядке. В целом такие тройки получить вам поможет обычный 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);
Можно конечно использовать тысячу и одну стандартную функция пятьдесят два раза, а можно написать простенький цикл -
$new_arr = [];
for( $i = 0; $i <= 1; $i ++ ) {
foreach($arr as $k => $v) {
$new_arr[] = $arr[$k][$i];
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Мне нужно разработать систему интеграции с различными информационными системами
есть блок кода (назовем его $foo->bar() ) который должен выполнится один раз и только один разкак это организовать в многопользовальском сценарии?
Использую ОктябрьСоздана страница заказа, где собирается вся информация