У меня многомерный массив, и я пытаюсь выяснить, как просто «эхо» элементов массива. Глубина массива неизвестна, поэтому он может быть глубоко вложен.
В случае массива ниже правильный порядок эха будет следующим:
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 ( ) ) )
Похоже, вы только пытаетесь написать одно важное значение из каждого массива. Попробуйте рекурсивную функцию:
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']); } }