回声多维数组的更好方法

时间:2013-05-07 21:17:40

标签: php arrays

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

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>";
  }

这似乎有点不必要,有没有更好的方法呢?

4 个答案:

答案 0 :(得分:4)

执行此类操作的“更好”方法是编写一个可重用的函数来绘制特定的表结构。

没有(和IMO不应该)遍历多维数组的特定函数。原因是理论上可能存在无数个嵌套结构,这会导致不可预测的结果。

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


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

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

而是使用不同的变量:

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

答案 1 :(得分:3)

你想要这样做吗?

<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>

答案 2 :(得分:0)

这是我经常使用的代码:

// 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文档。

答案 3 :(得分:-1)

使用php的print_r函数。

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

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