【问题标题】:How to get array output in html table如何在html表中获取数组输出
【发布时间】:2016-04-13 00:31:50
【问题描述】:

我想做的是:

我有一个 SQL 查询给我一个输出。在该输出上 1 在 php 中进行选择。

$cities[$row['stad']][$row['status']]++

这给了我这样的输出(在 <pre> 标签内):

Array
(
    [Amsterdam] => Array
        (
            [41] => 2
            [21] => 91
            [43] => 16
            [42] => 2
            [20] => 30
            [4] => 4
            [70] => 3
            [84] => 8
            [46] => 4
            [45] => 5
            [999] => 26
            [47] => 2
            [3] => 8
            [44] => 1
            [40] => 1
            [93] => 5
            [56] => 3
            [61] => 3
            [79] => 3
            [48] => 2
            [50] => 5
            [10] => 10
            [52] => 2
            [120] => 1
            [95] => 1
            [1] => 65
            [90] => 6
        )

我想像这样放入一个 html 表格:

City        41  21  43  42  20  7   …… etc 
amsterdam   2   91  16  2   30  4   …… etc 

重要的是要知道有超过 1 个城市。

这是我目前拥有的:

echo '<table cellpadding="10" cellspacing="10" border="1">';

foreach($cities as $city) { 
    echo '<tr>';
    echo '<td>' . $row['stad'] . '</td>';
    echo '<td>' . $city[$row['status']] . '</td>';

    echo '</tr>';
}

echo '</table>';

【问题讨论】:

  • 向我们展示您的尝试。
  • 您遇到的问题是什么?
  • 你表的第一行代表表头?我的意思是你把“城市”放在第一列,但是其他的值,这些值总是一样的吗?
  • 第一行确实代表表的头部,可能不是每个城市的每一行都有值,但它只是空的。每个城市的价值总​​是不同的
  • 请问你能打印出你在 $city 中得到的东西吗?

标签: php html html-table


【解决方案1】:

您需要另一个列出所有标题值的数组;在下面的代码中,我将此数组称为$headings。这是因为每个城市的值的键顺序可能不同,并且可能缺少键,因此仅循环遍历城市数组不会在每一行上得到一致的值。

$headings = array(41, 21,  43,  42,  20,  7, etc.); 

echo '<table cellpadding="10" cellspacing="10" border="1">';
echo '<tr><th>City</th>';
foreach ($headings as $h) {
    echo "<th>$h</th>";
}
echo '</tr>';

foreach($cities as $cityname => $city) { 
    echo '<tr>';
    echo "<td>$cityname</td>";
    foreach ($headings as $h) {
        echo '<td>' . (isset($city[$h]) ? $city[$h] : '') . '</td>';
    }    
    echo '</tr>';
}

echo '</table>';

【讨论】:

  • 这给了我一个输出,其中只有一个带有单词 city 的表格
  • 在开头添加error_reporting(E_ALL);,你会收到任何警告吗?
  • 是的,我确实收到了警告,例如第 55 行 /Applications/XAMPP/xamppfiles/htdocs/locationboard/index.php 中为 foreach() 提供的参数无效,但我使用 @ 关闭了所有 te 错误987654324@
  • 尝试调试脚本时不要关闭错误。
  • foreach ($headings as $h) {
【解决方案2】:

将 foreach 与 $key 元素一起使用,这样您就可以直接获取密钥

更改此代码

foreach($cities as $city) { 
    echo '<tr>';
    echo '<td>' . $row['stad'] . '</td>';
    echo '<td>' . $city[$row['status']] . '</td>';

    echo '</tr>';
}

foreach($cities as $key=> $city) { 
    echo '<tr>';
    echo '<td>' . $key. '</td>';
    echo '<td>' . $city . '</td>';

    echo '</tr>';
}

【讨论】:

    【解决方案3】:

    试试这个 -

    <?php
    echo '<table cellpadding="10" cellspacing="10" border="1">';
    foreach($cities as $city):
    foreach($city as $k => $v)
    {
    echo "<tr><td>$k</td><td>$v</td></tr>";
    }
    endforeach;
    ?>
    

    【讨论】:

    • 这会将每个键和值放在单独的行中,而不是将城市的所有值放在同一行中。
    • 这是真的,我尝试运行它,但它给了我一个像 @Barmar 预测的输出
    【解决方案4】:

    只需在数组上使用foreach 即可构建您的表。

    <table>
        <tbody>
            <?php foreach ($cities as $key => $value): ?>
            <tr>
                <td><?= $key; ?>
                <?php foreach ($value as $subkey => $subvalue): ?>
                    <td><?= $subvalue; ?> </td>
                <?php endforeach; ?>
            </tr>
            <?php endforeach; ?>
        </tbody>
    </table>
    

    按步骤:

    • 循环遍历所有城市
    • 由于每个城市都有自己的子数组,然后我们将遍历该数组

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-24
      • 1970-01-01
      • 2020-05-19
      • 2010-10-06
      • 1970-01-01
      相关资源
      最近更新 更多