Там лучший путь состоит в том, чтобы транспонировать 2D массив PHP?

Согласно Руководству PHP, звоня array_map с a NULL обратный вызов заставляет это выполнять функцию "zip", создавая массив массивов параллельных элементов от данных массивов.

Например:

array_map(NULL,array(1,2,3),array('a','b','c'));

урожаи

array(array(1,'a'),array(2,'b'),array(3,'c'))

Это также эквивалентно перемещению массива

array(array(1,2,3),array('a','b','c'))

Прямо сейчас кажется, что это - самый близкий путь (использующий встроенные функции), можно транспонировать массив, за исключением того, что array_map берет список массивов, не массива массивов.

В некотором коде я продолжаю работать, я должен транспонировать массив массивов, не список массивов, таким образом, я сделал это обходное решение:

call_user_func_array('array_map',array_merge(array(NULL),$array_of_arrays))

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

И таким образом, я спрашиваю:
Существует ли лучший способ транспонировать 2D массив с PHP кроме пользовательской реализации?

10
задан Austin Hyde 11 August 2010 в 15:27
поделиться

2 ответа

Нет. Это самый элегантный.

4
ответ дан 4 December 2019 в 02:49
поделиться

Если вы действительно хотите избежать array_merge , используйте array_unshift , чтобы вместо этого добавить NULL к $ array_of_arrays :

array_unshift($array_of_arrays, NULL);
call_user_func_array('array_map', $array_of_arrays);

Конечно, это больше не однострочный: P

1
ответ дан 4 December 2019 в 02:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: