Php 以可读/分层格式显示数组

Php 以可读/分层格式显示数组,php,sql,Php,Sql,下面是为我的数组提取数据的代码 <?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 = my

下面是为我的数组提取数据的代码

<?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);
    }
?>
我希望它的内容如下:

亲生子女1
亲生子女2
亲生子女3

foreach($array as $v) echo $v, PHP_EOL;
更新:更复杂的解决方案是:

 $test = [
    'key1' => 'val1',
    'key2' => 'val2',
    'key3' => [
        'subkey1' => 'subval1',
        'subkey2' => 'subval2',
        'subkey3' => [
            'subsubkey1' => 'subsubval1',
            'subsubkey2' => 'subsubval2',
        ],
    ],
];
function printArray($arr, $pad = 0, $padStr = "\t") {
    $outerPad = $pad;
    $innerPad = $pad + 1;
    $out = '[' . PHP_EOL;
    foreach ($arr as $k => $v) {
        if (is_array($v)) {
            $out .= str_repeat($padStr, $innerPad) . $k . ' => ' . printArray($v, $innerPad) . PHP_EOL;
        } else {
            $out .= str_repeat($padStr, $innerPad) . $k . ' => ' . $v;
            $out .= PHP_EOL;
        }
    }
    $out .= str_repeat($padStr, $outerPad) . ']';
    return $out;
}

echo printArray($test);
这将打印出:

    [
        key1 => val1
        key2 => val2
        key3 => [
            subkey1 => subval1
            subkey2 => subval2
            subkey3 => [
                subsubkey1 => subsubval1
                subsubkey2 => subsubval2
            ]
        ]
    ]
试试这个:

foreach($data[0] as $child) {
   echo $child . "\n";
}
代替
print\r($data)
print\r()
主要用于调试。如果要以该格式打印,请在数组中循环,然后打印出元素

foreach($data as $d){
  foreach($d as $v){
    echo $v."\n";
  }
}
echo';
foreach($数据作为$条目){
foreach($entry2){
echo$entry2.“
”; } }
而不是

print "<pre>";
print_r($data);
print "</pre>";
试一试

print”“;
打印(数据);
打印“”;
print(“.print\r($data,true)。”);

我有一个基本功能:

<?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];
}
?>
函数预打印($a){
回声“;
印刷费($a);
回声“;
}
预打印(数据);
编辑:优化功能

echo "<pre>";
var_export($menue);
echo "</pre>";
函数预打印($a){
回音''。打印($a,1)。'';
}
编辑:Moar优化功能,支持自定义标签

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

echo nl2br(implode("\n",$msg));
echo '<br />----------------------<br/>';
?>
函数prettyPrint($a,$t='pre'){echo'.print\r($a,1)。“”;}


我用它向我的访问者展示了一个漂亮的打印数组

使用var_dump函数在php中打印格式化数组的非常好的方法

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

我认为
var\u export()
,被遗忘的
var\u dump()
兄弟,具有最好的输出-它更紧凑:

echo”“;
var_出口(menue);
回声“;

顺便说一下:并非总是需要使用
<代码>var_dump()和
var_export()
在查看网页的源代码时已经格式化。

这可能是一个更简单的解决方案:

$data = [['Natural Child 1', 'Natural Child 2', 'Natural Child 3']];
Kint::dump($data, $_SERVER);
    echo json_encode($data, JSON_PRETTY_PRINT);
回波内爆(“
”,$data[0]);
对于可以使用内爆的单个阵列,它的打印结果更清晰

    echo Yaml::dump($data);

对于多维数组,需要结合某种循环

function pretty_printr($array) {

  $string = print_r($array, TRUE);

  foreach (preg_split("/((\r?\n)|(\r\n?))/", $string) as $line) {

    $trimmed_line = trim($line);

    // Skip useless lines.
    if (!$trimmed_line || $trimmed_line === '(' || $trimmed_line === ')' || $trimmed_line === 'Array') {
      continue;
    }

    // Improve lines ending with empty values.
    if (substr_compare($trimmed_line, '=>', -2) === 0) {
      $line .=  "''";
    }

    print $line . PHP_EOL;
  }
}

我使用它来获取键及其值 $qw=mysqli_查询($connection,$query)

while($ou=mysqli\u fetch\u数组($qw))
{
foreach($ou作为$key=>$value)
{
回声$key.“-”$value.“;
}
回声“
”; }
我只会使用在线工具

  • 首先打印(您的数组)

  • 然后复制结果并粘贴进去


如果有人需要查看非常酷的阵列;)使用这个方法。。这将打印到您的浏览器控制台

输出将如下。。好酷啊


我假设使用打印进行调试。然后,我建议使用类似的库。这允许以可读格式显示大阵列:


一行代码可快速轻松地表示JSON:

如果已在项目中使用composer,则需要symfony/yaml和:


这试图改进控制台应用程序中的输出格式:

例如:



显示“Array”好的,那么您应该迭代两次foreach($raw为$Array)foreach($v为数组)echo$v,PHP_EOL;感谢您的回复,但它会将数据打印为“数组”@Xavier:您是否尝试过我回答中的更新代码?您需要在两个数组中循环
$data
是一个数组。你的代码也工作得很好,我刚刚把/n改成了一个
非常好,谢谢Brian!这究竟是为什么选择的答案,而这是显而易见的选择?如果你有一个多维数组,这将不起作用。@Alesana Yep,但OP没有多维数组。我认为,正如其他人对这个答案的评论一样,您希望的方式是打印($data)。不过,在5岁以上的回答上看到新的评论总是很有趣的!:)啊,在我的例子中,我使用的是多维数组。我以前没有留下任何评论,所以当我看到没有其他人指出这一点时,我认为这可能是一个完美的机会!这非常理想,因为它不会在数据周围添加不必要的空白。还值得一提的是,您可以将
true
作为第二个参数传递到print\r,以
string
的形式获取数据。现在您可以
返回“”。打印(User::all(),true)echo',print\r($a,1),“”我同意var_导出,但我不得不将其与合并,因为它没有以正确的格式输出结果。@Chaya Cooper显示的页面上的格式不正确,但我认为Hexodus的意思是“在您网页的源代码中”->请尝试菜单“查看源代码”,或按Ctrl-UFirefox@fpierrat对这正是我的意思。感谢您澄清这一点。这种方法的一个好处是,输出格式为有效的PHP,因此如果您愿意,可以将其复制/粘贴到代码中。我刚刚更新了它,使其更加健壮,感谢链接。这不是一个普通的PHP解决方案,但肯定提供了有用且可读的输出!
 $a = array(1, 2, array("a", "b", "c"));
 var_dump($a);
echo "<pre>";
var_export($menue);
echo "</pre>";
echo implode('<br>', $data[0]);
<?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/>';
}
?>
while ( $ou = mysqli_fetch_array($qw) )
{
    foreach ($ou as $key => $value) 
    {
            echo $key." - ".$value."";
    }
    echo "<br/>";
}
function console($obj)
{
    $js = json_encode($obj);
    print_r('<script>console.log('.$js.')</script>');
}
console($myObject);
$data = [['Natural Child 1', 'Natural Child 2', 'Natural Child 3']];
Kint::dump($data, $_SERVER);
    echo json_encode($data, JSON_PRETTY_PRINT);
    echo Yaml::dump($data);
function pretty_printr($array) {

  $string = print_r($array, TRUE);

  foreach (preg_split("/((\r?\n)|(\r\n?))/", $string) as $line) {

    $trimmed_line = trim($line);

    // Skip useless lines.
    if (!$trimmed_line || $trimmed_line === '(' || $trimmed_line === ')' || $trimmed_line === 'Array') {
      continue;
    }

    // Improve lines ending with empty values.
    if (substr_compare($trimmed_line, '=>', -2) === 0) {
      $line .=  "''";
    }

    print $line . PHP_EOL;
  }
}
[activity_score] => 0
[allow_organisation_contact] => 1
[cover_media] => Array
        [image] => Array
                [url] => ''
        [video] => Array
                [url] => ''
                [oembed_html] => ''
        [thumb] => Array
                [url] => ''
[created_at] => 2019-06-25T09:50:22+02:00
[description] => example description
[state] => published
[fundraiser_type] => anniversary
[end_date] => 2019-09-25
[event] => Array
[goal] => Array
        [cents] => 40000
        [currency] => EUR
[id] => 37798
[your_reference] => ''