Echo многомерный массив в PHP

У меня многомерный массив, и я пытаюсь выяснить, как просто «эхо» элементов массива. Глубина массива неизвестна, поэтому он может быть глубоко вложен.

В случае массива ниже правильный порядок эха будет следующим:

This is a parent comment This is a child comment This is the 2nd child comment This is another parent comment 

Это массив, о котором я говорил:

 Array ( [0] => Array ( [comment_id] => 1 [comment_content] => This is a parent comment [child] => Array ( [0] => Array ( [comment_id] => 3 [comment_content] => This is a child comment [child] => Array ( [0] => Array ( [comment_id] => 4 [comment_content] => This is the 2nd child comment [child] => Array ( ) ) ) ) ) ) [1] => Array ( [comment_id] => 2 [comment_content] => This is another parent comment [child] => Array ( ) ) ) 

Solutions Collecting From Web of "Echo многомерный массив в PHP"

Похоже, вы только пытаетесь написать одно важное значение из каждого массива. Попробуйте рекурсивную функцию:

 function RecursiveWrite($array) { foreach ($array as $vals) { echo $vals['comment_content'] . "\n"; RecursiveWrite($vals['child']); } } 

Вы также могли бы сделать его немного более динамичным, а строки 'comment_content' и 'child' передавались в функцию в качестве параметров (и продолжали передавать их в рекурсивном вызове).

 <pre> <?php print_r ($array); ?> </pre> 

Правильное, лучшее и чистое решение:

 function traverseArray($array) { // Loops through each element. If element again is array, function is recalled. If not, result is echoed. foreach ($array as $key => $value) { if (is_array($value)) { Self::traverseArray($value); // Or // traverseArray($value); } else { echo $key . " = " . $value . "<br />\n"; } } } 

Вы просто вызываете эту вспомогательную функцию traverseArray($array) в текущем / основном классе следующим образом:

 $this->traverseArray($dataArray); // Or // traverseArray($dataArray); 

источник: http://snipplr.com/view/10200/recursively-traverse-a-multidimensional-array/

print_r($arr) обычно дает довольно читаемый результат.

если вы хотите сохранить его как переменную, которую вы могли бы сделать:

 recurse_array($values){ $content = ''; if( is_array($values) ){ foreach($values as $key => $value){ if( is_array($value) ){ $content.="$key<br />".recurse_array($value); }else{ $content.="$key = $value<br />"; } } } return $content; } $array_text = recurse_array($array); 

Очевидно, вы можете отформатировать по мере необходимости!

Попробуйте использовать функцию var_dump .

Если вы выводите данные для целей отладки и разработки, Krumo отлично подходит для создания легко читаемых результатов. Посмотрите пример вывода .

Обычно рекурсия будет вашим ответом, но альтернативой будет использование ссылок. См. http://www.ideashower.com/our_solutions/create-a-parent-child-array-structure-in-one-pass/

Существует несколько способов сделать это

1) – print_r($array); или если вы хотите красиво отформатированный массив, тогда

 echo '<pre>'; print_r($array); echo '<pre/>'; 

// ———————————————— –

2) – используйте var_dump($array) чтобы получить больше информации о содержимом в массиве, таком как тип данных и длина. // ———————————————— –

3) – вы можете объединить массив, используя php foreach(); и получить желаемый результат.

 function recursiveFunction($array) { foreach ($array as $val) { echo $val['comment_content'] . "\n"; recursiveFunction($vals['child']); } }