Отображение массива в удобочитаемом / иерархическом формате
вот код для извлечения данных для моего массива
<?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
17 ответов:
у меня есть основная функция:
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);
вывод будет такой.. так здорово, а !!
print_r()
в основном для отладки. Если вы хотите распечатать его в этом формате, выполните цикл по массиву и распечатайте элементы.foreach($data as $d){ foreach($d as $v){ echo $v."\n"; } }
Я предполагаю, что для отладки используется print_r. Затем я бы предложил использовать библиотеки, такие как Кинт. Это позволяет отображать большие массивы в удобочитаемом формате:
$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/>"; }
Я бы просто использовать онлайн-инструменты.
сначала сделайте print_r (your_array)
второй скопируйте результат и вставьте в http://phillihp.com/toolz/php-array-beautifier/
один-вкладыш для быстрой и легкой представление JSON:
echo json_encode($data, JSON_PRETTY_PRINT);
Если вы уже используете composer для проекта, требуйте symfony / yaml и:
echo Yaml::dump($data);
<?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/>'; } ?>