PHP - 从嵌套数组中的数据创建表

时间:2016-02-02 16:05:01

标签: php html arrays

我正在尝试学习如何遍历嵌套数组并创建PHP表。

我无法弄清楚如何循环,以便每个数组都在自己的<tr>标记中。

我使用for循环为每个数组创建<tr>。但是我想我想念怎么做。它在创建新的<tr>之前循环遍历两个数组。

PHP代码:

<?php
//Lets make a table
$rows = array(

    array(

        'color' => 'red',
        'make' => 'Ferrari',
        'price' => 3000

    ),

    array(

        'color' => 'blue',
        'make' => 'BMW',
        'price' => 1000

    )

);
?>

<table border='1'>
    <tr>
        <th>Colour</th>
        <th>Make</th>
        <th>Price</th>
    </tr>

    <?php

    for($i = 0; $i < count($rows); $i++){

        echo '<tr>';

        foreach($rows as $rowkey => $row){

            echo '<td>' . $row['color']. '</td>';
            echo '<td>' . $row['make'] . '</td>';
            echo '<td>' . $row['price'] . '</td>';
        }

        echo '</tr>';

    }

    ?>

</table>

结果:

<table border='1'>
  <tr>
    <th>Colour</th>
    <th>Make</th>
    <th>Price</th>
  </tr>

  <tr>
    <td>red</td>
    <td>Ferrari</td>
    <td>3000</td>
    <td>blue</td>
    <td>BMW</td>
    <td>1000</td>
  </tr>
  <tr>
    <td>red</td>
    <td>Ferrari</td>
    <td>3000</td>
    <td>blue</td>
    <td>BMW</td>
    <td>1000</td>
  </tr>
</table>

如何遍历这种数组并为每个嵌套数组创建一个新的<tr>

2 个答案:

答案 0 :(得分:3)

试试这个,松开外面的for循环:

<?php
$rows = array(
    array(
        'color' => 'red',
        'make' => 'Ferrari',
        'price' => 3000
    ),
    array(
        'color' => 'blue',
        'make' => 'BMW',
        'price' => 1000
    )
);
?>
<table border='1'>
    <tr>
        <th>Colour</th>
        <th>Make</th>
        <th>Price</th>
    </tr>
    <?php foreach ($rows as $key => $row): ?>
        <tr>
            <td><?= $row['color'] ?></td>
            <td><?= $row['make'] ?></td>
            <td><?= $row['price'] ?></td>
        </tr>
    <?php endforeach; ?>
</table>

答案 1 :(得分:2)

您应该选择并使用两个循环中的一个

或者:

for($i = 0; $i < count($rows); $i++){
    echo '<tr>';
    echo '<td>' . $rows[$i]['color']. '</td>';
    echo '<td>' . $rows[$i]['make'] . '</td>';
    echo '<td>' . $rows[$i]['price'] . '</td>';
    echo '</tr>';
}

或者:

foreach($rows as $rowkey => $row){
    echo '<tr>';
    echo '<td>' . $row['color']. '</td>';
    echo '<td>' . $row['make'] . '</td>';
    echo '<td>' . $row['price'] . '</td>';
    echo '</tr>';
}

因为现在你将数组循环两次:

  • 第一次使用for循环
  • 第二次使用foreach循环