Intereting Posts
Использование PhpRenderer непосредственно с дочерними представлениями в ZF2 Как предотвратить дублирование сообщений через обновление браузера? Как обновить значение столбца с текущим значением столбца плюс прирост в codeigniter? Загрузка файла Laravel – расширение php_fileinfo не включено Установка SSH2 для PHP для запуска на сервере Xampp Apache на OSX 10.9.1 Автозагрузчик PHP 5.3 Как изменить разрешенную память выделенной памяти? Есть ли способ ограничить количество представлений для php-формы? php: как предотвратить SQL-инъекцию из $ _POST Относительные файлы include PhpStorm не получает соединения xdebug: журнал событий PhpStorm: не удается оценить выражение 'isset ($ _ SERVER )' Получать сообщения с помощью мета значения, используя флажок Переопределение шаблона FOSUserBundle по умолчанию, никакого эффекта Использование print_r и var_dump с круговой ссылкой Удаление файлов изображений с сервера

php implode многомерный массив для табулированных линий

У меня есть многомерный массив $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 за рекомендацию, а затем удалить его сообщение. Это решение сработало для меня.