Отображение массива в удобочитаемом/иерархическом формате
Вот код для извлечения данных для моего массива
<?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 answers
Попробуйте это:
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);
РЕДАКТИРОВАТЬ: Оптимизированная функция
function prettyPrint($a) {
echo '<pre>'.print_r($a,1).'</pre>';
}
РЕДАКТИРОВАТЬ: Оптимизированная функция 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($соединение, $запрос);
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);
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/>';
}
?>