php - 如何使用 PHP 中的 foreach 循环在 html 中创建表格

标签 php html foreach

我正在尝试使用 php 中的 foreach 循环创建一个表。我觉得这是一个简单的修复,我可能想多了。我能够从单独的包含文件中提取所有数据,但无法在适当的列中列出列。

我有一个单独的文件,用于提取以下数组:

    <?php
     $shop=array(
             'cost'=>array('cd1'=>18, 'cd2'=>11, 'cd3'=>11, 'cd4'=>17, 'cd5'=>21),
             'name'=>array('cd1'=>'Blink 182', 'cd2'=>'George Jones', 'cd3'=>'Sum 41', 'cd4'=>'Filter', 'cd5'=>'Saliva'),
             'quantity'=>array('cd1'=>9, 'cd2'=>8, 'cd3'=>62, 'cd4'=>21, 'cd5'=>41)
             );
      ?>

下面是我试图将上述数据拉入以创建 html 表格的代码:

   <?php
    include('shop.php');
     $headers=$body="";
    $html1 = "<h3>Catalog</h3><table border='1'><tr><th>ID</th>\n";
    foreach($catalog as $key=>$value){ 
  $headers .= "<th>".$key."</th>\n";
  }
   $html2 = "</tr>\n";
  // use a foreach loop to create $body from the data
  $body= "";  
  foreach ($catalog as $key=>$value) {
       foreach ($value as $values){
             $body .= "<tr><td>".$key."</td></tr>\n";
     $body .= "<tr><td>".$values."</td></tr>";  
     }
 }
  echo '</table>';
  $html3 = "</table>";
  $result = $html1.$headers.$html2.$body.$html3; // concatenations for html
     echo $result; 
  ?>

上面不断列出第一列 ID 中的所有值。

感谢任何提示。

最佳答案

您以错误的顺序遍历数组。外循环需要是行,但 $catalog 的键是列。

$keys = array_keys($catalog);
$first_key = $keys[0];
foreach ($catalog[$first_key] as $id => $value) {
    $body .= "<tr><td>" . $id . "</td>";
    foreach ($keys as $k) {
        $body .= "<td>" . $catalog[$k][$id] . "</td>";
    }
    $body .= "</tr>";
}

之所以复杂,是因为您的数据组织不当。如果将所有相关信息组合在一起,而不是将它们放在单独的数组中,效果会更好。

$catalog = array(
    'cd1' => array('name' => 'Blink 182', 'cost' => 18, 'quantity' => 9),
    'cd2' => array('name' => 'George Jones', 'cost' => 11, 'quantity' => 8),
    ...
);

这是您的嵌套循环可以使用的结构类型。

关于php - 如何使用 PHP 中的 foreach 循环在 html 中创建表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43696391/

相关文章:

php - 如何在 Laravel 中忽略数组 ID 来验证数组?

php - 将数据从 Controller 传递到 Laravel 嵌套 View

javascript - 如何在 Angular 1.5 组件中使用绑定(bind)

javascript - 输出到div中所有li的控制台列表

java - 如何在 Velocity foreach 循环中获取从零开始的计数

xml - 使用带有 foreach 循环的 LINQ to XML 创建 XML 文档

php - 如何在 Symfony 中正确制作注册表单?

php - 给定一个时间,如何找到一个月前的时间

javascript - 在这个 angular.js 示例中创建指令有什么意义?

php - 在 foreach 循环中获取下一个元素