Отображение массива в читаемом / иерархическом формате

Вот код для вытягивания данных для моего массива

<?php $link = mysqli_connect('localhost', 'root', '', 'mutli_page_form'); $query = "SELECT * FROM wills_children WHERE will=73"; $result = mysqli_query($link, $query) or die(mysqli_error($link)); if ($result = mysqli_query($link, $query)) { /* fetch associative array */ if($row = mysqli_fetch_assoc($result)) { $data = unserialize($row['children']); } /* free result set */ mysqli_free_result($result); } ?> 

Когда я использую print_r ($ data), он читается как:

 Array ( [0] => Array ( [0] => Natural Chlid 1 [1] => Natural Chlid 2 [2] => Natural Chlid 3 ) ) 

Я бы хотел, чтобы он читал:

Природный ребенок 1
Природный ребенок 2
Природный ребенок 3

Попробуй это:

 foreach($data[0] as $child) { echo $child . "\n"; } 

вместо print_r($data)

Вместо

 print_r($data); 

пытаться

 print "<pre>"; print_r($data); print "</pre>"; 
 print("<pre>".print_r($data,true)."</pre>"); 

У меня есть основная функция:

 function prettyPrint($a) { echo "<pre>"; print_r($a); echo "</pre>"; } prettyPrint($data); 

EDIT: оптимизированная функция

 function prettyPrint($a) { echo '<pre>'.print_r($a,1).'</pre>'; } 

EDIT: оптимизированная функция Moar с поддержкой пользовательских тегов

 function prettyPrint($a, $t='pre') {echo "<$t>".print_r($a,1)."</$t>";} 

Я думаю, что var_export() , забытый брат var_dump() имеет лучший результат – он более компактный:

 echo "<pre>"; var_export($menue); echo "</pre>"; 

Кстати: не всегда нужно использовать <pre> . var_dump() и var_export() уже отформатированы, когда вы смотрите в исходный код своей веб-страницы.

если кто-то должен просматривать массивы так здорово;) используйте этот метод .. это будет печатать на консоль вашего браузера

 function console($obj) { $js = json_encode($obj); print_r('<script>console.log('.$js.')</script>'); } 

вы можете использовать вот так ..

 console($myObject); 

Выход будет таким: так круто, а !!

введите описание изображения здесь

 foreach($array as $v) echo $v, PHP_EOL; 

Это может быть более простое решение:

 echo implode('<br>', $data[0]); 

print_r() в основном используется для отладки. Если вы хотите распечатать его в этом формате, проведите цикл по массиву и распечатайте элементы.

 foreach($data as $d){ foreach($d as $v){ echo $v."\n"; } } 

Я предполагаю, что для отладки используется print_r. Тогда я бы предложил использовать библиотеки, такие как Kint . Это позволяет отображать большие массивы в читаемом формате:

 $data = [['Natural Child 1', 'Natural Child 2', 'Natural Child 3']]; Kint::dump($data, $_SERVER); 

введите описание изображения здесь

Очень хороший способ распечатать отформатированный массив в php, используя функцию var_dump.

  $a = array(1, 2, array("a", "b", "c")); var_dump($a); 

Я использую это для получения ключей и их значений $ qw = mysqli_query ($ connection, $ query);

 while ( $ou = mysqli_fetch_array($qw) ) { foreach ($ou as $key => $value) { echo $key." - ".$value.""; } echo "<br/>"; } 

Я бы просто использовал онлайн-инструменты.

Однострочный для быстрого и легкого представления JSON:

  echo json_encode($data, JSON_PRETTY_PRINT); 

Если вы используете композитор для проекта уже, имейте в виду symfony / yaml и:

  echo Yaml::dump($data); 
 echo '<pre>'; foreach($data as $entry){ foreach($entry as $entry2){ echo $entry2.'<br />'; } } 
 <?php //Make an array readable as string function array_read($array, $seperator = ', ', $ending = ' and '){ $opt = count($array); return $opt > 1 ? implode($seperator,array_slice($array,0,$opt-1)).$ending.end($array) : $array[0]; } ?> 

Я использую это, чтобы показать довольно печатный массив для моих посетителей

Для одиночных массивов вы можете использовать implode, у него есть более чистый результат для печати.

 <?php $msg = array('msg1','msg2','msg3'); echo implode('<br />',$msg); echo '<br />----------------------<br/>'; echo nl2br(implode("\n",$msg)); echo '<br />----------------------<br/>'; ?> 

Для многомерных массивов вам необходимо комбинировать с каким-то контуром.

 <?php $msgs[] = $msg; $msgs[] = $msg; $msgs[] = $msg; $msgs[] = $msg; $msgs[] = $msg; foreach($msgs as $msg) { echo implode('<br />',$msg); echo '<br />----------------------<br/>'; } ?>