PHP多维数组转html表

新手上路,请多包涵

我有一个多维数组,我试图将其输出为表格,这是我的数组;

 $marksarray=
array(3) {
      [0]=>
      array(2) {
        [0]=>
        string(1) "8"
        [1]=>
        string(1) "0"
      }
      [1]=>
      array(2) {
        [0]=>
        string(1) "9"
        [1]=>
        string(1) "1"
      }
      [2]=>
      array(2) {
        [0]=>
        string(2) "13"
        [1]=>
        string(1) "2"
      }
    }

到目前为止,我的代码是这样的;

 echo "<table><tr><td>Question</td><td>Rating</td></tr>";
     foreach ($marksarray as $mks){
         foreach ($mks as $qid=>$rate){
            echo "<tr><td>".$qid."</td><td>".$rate."</td></tr>";
          }
    }
echo "</table></div>";

但我的输出是;在此处输入图像描述

我做错了什么?

原文由 Udy Warnasuriya 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 260
2 个回答

你有太多了 foreach 在那里。试试这个:

 echo "<table><tr><td>Question</td><td>Rating</td></tr>";
     foreach ($marksarray as $mks){
        echo "<tr><td>".$mks[0]."</td><td>".$mks[1]."</td></tr>";
    }
echo "</table></div>";

为了将来的参考,如果您使用具有有意义的键的关联数组数组,它会使您的代码更容易理解。例如

$marksarray = array(
    array('qid' => 8, 'rating' => 0),
    array('qid' => 9, 'rating' => 1),
    array('qid' => 13, 'rating' => 2)
);

然后你的循环看起来像这样:

 foreach ($marksarray as $mark){
    echo "<tr><td>".$mark['qid']."</td><td>".$mark['rating']."</td></tr>";
}

更好的是,您应该使用 MVC(模型、视图、控制器)并将此数据传递到视图中……但这完全是另一个主题。

原文由 RobMasters 发布,翻译遵循 CC BY-SA 4.0 许可协议

当您 echo 您的数组时,您正在输出 key 而不是实际值。因此,为什么您在第一列中得到“0”和“1”。

如果您坚持使用当前的数组布局,则需要以下代码:

 echo "<table><tr><td>Question</td><td>Rating</td></tr>";
     foreach ($marksarray as $mks){
        echo "<tr><td>".$mks[0]."</td><td>".$mks[1]."</td></tr>";
     }
echo "</table></div>";

…这样您就可以使用键值来提取要显示的匹配值。

如果你不坚持你现在拥有的数组结构,你必须像这样构造你的数组,以利用 keypair 值:

 $marksarray = array(
    "8" => 0,
    "9" => 1,
    "13" => 2,
);

并使用代码:

 echo "<table><tr><td>Question</td><td>Rating</td></tr>";
     foreach ($marksarray as $qid => $rate){

        echo "<tr><td>".$qid."</td><td>".$rate."</td></tr>";

     }
echo "</table></div>";

… 这样您就可以在代码中明确引用您的 keypair 值。

原文由 Luke 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏