У меня есть многомерный массив $BlockData[]
который имеет в нем 13 измерений и число элементов 'n'. Мне нужно вставить этот массив обратно в одну длинную строку, где элементы разделены "\n"
строками строк, а размеры разделены вкладками "\t"
.
Я пробовал использовать array_map()
без успеха и нуждаюсь в помощи в этом. Пожалуйста помоги!
Вот вариант, который я предложил вчера в чате:
$callback = function($value) { return implode("\t", $value); }; echo implode("\n", array_map($callback, $BlockData));
Или, если вы используете PHP <5.3 (5.2, 5.1, 5.0 и т. Д.),
$callback = create_function('$value', 'return implode("\t", $value);'); echo implode("\n", array_map($callback, $BlockData));
Это можно сделать с помощью рекурсивной функции
<?php function r_implode( $pieces ) { foreach( $pieces as $r_pieces ) { if( is_array( $r_pieces ) ) { $retVal[] = "\t". r_implode( $r_pieces ); } else { $retVal[] = $r_pieces; } } return implode("\n", $retVal ); } $test_arr = array( 0, 1, array( 'a', 'b' ), array( array( 'x', 'y'), 'z' ) ); echo r_implode( $test_arr ) . "\n"; $test_arr = array( 0 ); echo r_implode( $test_arr ) . "\n"; ?>
$lines = array(); foreach($BlockData as $data) { $lines[] = implode("\t", $data); } echo implode("\n", $lines);
Я хотел бы отдать должное @Alex за рекомендацию, а затем удалить его сообщение. Это решение сработало для меня.