这是更好的回应多维数组的方法


Better way to echo a multi dimensional array

我有一个像这样的多维数组

Array
(
    [0] => Array
        (
            [name] => Fernando Alonso
            [time1] => 3.25
            [time2] => 3.25
            [time3] => 3.5
        )
    [1] => Array
        (
            [name] => Jenson Button
            [time1] => 34
            [time2] => 34
            [time3] => 41
        )
)

我想把数据回显到一个表中,目前我正在使用($result是数组)

foreach ($result as $result) {
    echo "<tr>";
      foreach ($result as $driver) {
        echo "<td>$driver</td>";
      }
    echo "</tr>";
  }

这似乎有点不必要,有没有更好的方法来做到这一点?

更好的方法是编写一个可重用的函数来绘制特定的表结构。

没有(我也不应该)一个特定的函数来遍历多维数组。这样做的原因是,理论上可能存在无限数量的嵌套结构,这将导致不可预测的结果。

该语言为您提供了足够的工具来遍历您提供的任何多维数组,只要您用正确的代码结构备份它。


在您的示例中,这将是遍历二维数组的完美方式。我唯一要改变的是不为数组和foreach循环中的元素使用相同的名称:

foreach ($result as $result) {} // WRONG

使用不同的变量:

foreach ($results as $result) {} // RIGHT

你想这么做吗?

<table width="100%">
    <thead>
        <tr>
            <th>Name</th>
            <th>Time 1</th>
            <th>Time 2</th>
            <th>Time 3</th>
        </tr>
    </thead>
    <tbody>
    <?php foreach ($result as $row): ?>
        <tr>
            <td><?php echo $row['name'];?></td>
            <td><?php echo $row['time1'];?></td>
            <td><?php echo $row['time2'];?></td>
            <td><?php echo $row['time3'];?></td>
        </tr>
    <?php endforeach; ?>
    </tbody>
</table>

下面是我经常使用的代码:

// Simple call :
echo '<pre>' . var_export($var, true) . '</pre>';
// Or as a function :
function var_str_repr($var, $as_html = true) {
    $repr = var_export($var, true);
    if ($as_html) {
        return '<pre>' . $repr . '</pre>';
    } else {
        return $repr;
    }
}

查看var_export文档获取更多信息

使用php的print_r函数

$arr = ...;
echo "<pre>"; 
print_r($arr);
echo "</pre>";

这不会显示在表格中。我不认为有一个内置的功能来显示数组在一个表。你需要写一个简单的函数。问题中提供的代码很简单,可以完成任务。