打印多维数组



这段代码让我脑子出了问题。我想在PHP中打印一个多维数组,其中'列'由连字符分隔,'行'由换行分隔。

我的问题是我的代码在每行的末尾打印一个'-'。在查看我的代码时,这是很明显的:

注意:($result为二维数组,即$result[][])

foreach($result as $row){
    foreach($row as $column){
            echo $column . "-";
    }
    echo "n";
}

输出:

42-1-1394752507-16.125-
43-1-1394752569-16.125-
44-1-1394752632-16.562-
45-1-1394752693-17.125-

打印出来以避免每行末尾的-的最佳方法是什么?我可以检查一下当前的$column是否是$row中的最后一个元素,但我实际上不知道如何做到这一点

implode是你的朋友:

foreach($result as $row){
    echo implode('-', $row) . "n";
}
<?php
$row = [
    '42' => [1, 2, 3],
    '43' => [2, 3, 4],
];
array_walk($row, function($item, $key) {
    echo $key . implode('-', $item) . PHP_EOL;
});

我可以做一个检查,看看当前$列是否是最后一个元素但是我不知道怎么做

implode()是可行的方法,但是如果您想了解如何找出当前列是否是最后一列:

// foreach (value)
foreach($result as $row){
  $column_count = count($row);
  // for each (key => value)
  foreach($row as $column_index => $column){
    echo $column;
    if($column_index < $column_count - 1){
      echo "-";
  }
  echo "n";
}

可以直接使用内爆:

implode($row,"-");

一个选项:

foreach($result as $row){
$c='';
    foreach($row as $column){
            $c.= $column . "-";
    }
    $c=rtrim($c,'-');
    echo "$cn";
}

如果您还想避免尾随换行符,您可以使用下面的一行代码:

echo implode(array_map(function($row) {return implode('-', $row);}, $result), "n");

当然,在线代码是丑陋和不干净的代码。

这段代码是做什么的?它在每一行上使用implode,并且array_map创建一个已经内爆行的平面(一维)数组。还是用换行符。

最后,这个解决方案不是性能最好的。但它是一个简洁的联机符:)

相关内容

  • 没有找到相关文章

最新更新