【问题标题】:How to use a foreachloop to place the array data in table [duplicate]如何使用foreachloop将数组数据放在表中[重复]
【发布时间】:2016-05-29 02:24:27
【问题描述】:

我不断收到错误消息:解析错误:语法错误,意外的 'sName' (T_STRING),在第 5 行期待 ']' 我需要一些帮助来解决这个问题。谁能告诉我我的代码有什么问题?

<!DOCTYPE html>
<?php
$data = array [
                ["sName” => “Gervase”, "sNumber" => "s1234567", "mark” => 95, “comments” => “Well done!”],
                ["sName” => “Matt”, "sNumber" => "s1234567", "mark” => 95, “comments” => “Well done!”],
                ["sName” => “Kid”, "sNumber" => "s1234567", "mark” => 95, “comments” => “Well done!”],
                ["sName” => “Nathan”, "sNumber" => "s1234567", "mark” => 85, “comments” => “Well done!”]
  ]
?>
<html>
<head>
    <link type='text/css' rel='stylesheet' href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"/>
</head>
    <body>
        <div>
            <div class="jumbotron">
                 <div>
                     <div class="container">
                         <h1>Data</h1>
                 </div>
                 <div>
                 <div class="container">
                   <table>
                        <table class="table">
                             <thead>  
                           <?php

                            foreach ($data as $data)
                            {
                                echo"<tr>";
                                echo"<td>".$data["sName"]."</td>";
                                echo"<td>".$data["sNumber"]."</td>";
                                echo"</tr>";
                            }
                            ?>
                                 <tr>
                                   <th>Student number</th>
                                   <th>Student name</th>
                                   <th>Mark</th>
                                   <th>Comments</th>
                                 </tr>
                                 <tr>
                                   <td>Something</td>
                                 </tr>
                             </thead>
                   </table>
                 </div<
       </div>
    </body>

【问题讨论】:

    标签: php html arrays loops foreach


    【解决方案1】:

    根据当前代码,可能与 $data 数组右括号后缺少的分号有关。

    除此之外,您的代码似乎混合了表示引号的不同字符。您可以根据问题块中应用的格式颜色看到这一点。尝试直接在编辑器中重新键入数组(而不是复制和粘贴或其他方式),以便所有字符都匹配,看看是否有帮助。

    【讨论】:

      【解决方案2】:

      复制粘贴下面的代码,有一些细微的错误像array[]应该是array(),foreach($data as $data)应该是foreach($data as $datum)$datum可以是任何东西,但不是$data,最重要的是你的文本编辑器出了点问题...... 查看显示颜色,即使这段代码您可能会遇到不同的颜色来呈现$data,请使用其他文本编辑器,因为您当前的文本编辑器会将您的常规引用更改为其他内容......

      <!DOCTYPE html>
      <?php
      $data = array(
                      ["sName"=>"Gervase", "sNumber"=>"s1234567","mark"=>95,"comment"=>"Well Done!"],
                      ["sName"=>"Matt", "sNumber"=>"s1234567","mark"=>95,"comment"=>"Well Done!"],
                      ["sName"=>"Kid", "sNumber"=>"s1234567","mark"=>95,"comment"=>"Well Done!"],
                      ["sName"=>"Nathan", "sNumber"=>"s1234567","mark"=>95,"comment"=>"Well Done!"]
        );
      ?>
      <html>
      <head>
          <link type='text/css' rel='stylesheet' href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"/>
      </head>
          <body>
              <div>
                  <div class="jumbotron">
                       <div>
                           <div class="container">
                               <h1>Data</h1>
                       </div>
                       <div>
                       <div class="container">
                         <table>
                              <table class="table">
                                   <thead> 
                                    <tr>
                                         <th>Student number</th>
                                         <th>Student name</th>
                                         <th>Mark</th>
                                         <th>Comments</th>
                                       </tr>
                                    </tr>
                                  </thead>
                                  <tbody> 
                                 <?php
      
                                  foreach ($data as $datum)
                                  {
                                      echo"<tr>".
                                            "<td>".$datum["sName"]."</td>".
                                            "<td>".$datum["sNumber"]."</td>".
                                            "<td>".$datum["mark"]."</td>".
                                            "<td>".$datum["comment"]."</td>".
                                      "</tr>";
                                  }
                                  ?>
      
                                       <tr>
                                         <td>Something</td>
                                       </tr>
                                   </thead>
                         </table>
                       </div<
             </div>
          </body>
      

      【讨论】:

      • "它应该是 array()" - 不一定,并给出错误消息。否则,他们将收到一条不同的错误消息,即Parse error: syntax error, unexpected '[', expecting '(',他们没有在问题中提出,而是Parse error: syntax error, unexpected 'sNameâ€' (T_STRING)。如果他们的 PHP 版本是并且似乎是 > 5.4
      • 做那种评论是不受欢迎的^
      • @fred-ii 我写有错误....你能看一下答案吗,
      • 我有,这不是问题,相信我。
      • "foreach($data as $data) 它应该像 foreach($data as $datum) $datum 可以是任何东西,但不是 $data" - 抱歉,但是foreach($data as $data) 和你建议的都做同样的事情。这里真正的问题是花引号。
      【解决方案3】:

      “我不断收到错误消息:解析错误:语法错误,意外的 'sName” (T_STRING),期待 ']' 在第 5 行”

      你看到这些花引号了吗? “ ”.

      您需要将它们全部更改为常规引号"。

      ["sName" => "Gervase", "sNumber" => "s1234567", "mark" => 95, "comments" => "Well done!"],
      ["sName" => "Matt", "sNumber" => "s1234567", "mark" => 95, "comments" => "Well done!"],
      ["sName" => "Kid", "sNumber" => "s1234567", "mark" => 95, "comments" => "Well done!"],
      ["sName" => "Nathan", "sNumber" => "s1234567", "mark" => 85, "comments" => "Well done!"]
      

      您可能使用某种“文字”处理器进行编码,或者将其从网上某个地方拉出来,但没有正确转换这些引号。最好使用代码“编辑器”。

      另外,如果您的 PHP 版本 array()。但是,鉴于您发布的错误消息,这里似乎并非如此。否则,您将获得Parse error: syntax error, unexpected '[', expecting '('。

      即:

      $data = array (
          ["sName" => "Gervase", "sNumber" => "s1234567", "mark" => 95, "comments" => "Well done!"],
          ["sName" => "Matt", "sNumber" => "s1234567", "mark" => 95, "comments" => "Well done!"],
          ["sName" => "Kid", "sNumber" => "s1234567", "mark" => 95, "comments" => "Well done!"],
          ["sName" => "Nathan", "sNumber" => "s1234567", "mark" => 85, "comments" => "Well done!"]
      )
      

      为了以防万一,如果您在同一 PHP 块内的该块后面有任何 PHP,请添加一个结束分号

      "comments" => "Well done!"]
          );
      
      • 这是一种很好的做法。

      脚注:

      看到你只有 2 个 &lt;td&gt;...&lt;/td&gt; 缺少元素,添加另外两个:

      echo "<td>".$data["mark"]."</td>";
      echo "<td>".$data["comments"]."</td>";
      

      这是一个额外的附加组件。

      虽然列标题位于数据下方,但我觉得很奇怪。如果你想让它们在上面(我认为这会更好),把它放在上面。

      您也在这里关闭了错误的 &lt;/div&lt;,它应该是 &lt;/div&gt; 和一个杂散的 &lt;table&gt; 标记,并且会在调试/HTML 源代码中生成错误。

      即:

       <div class="container">
              <table class="table">
                   <thead>  
      
                       <tr>
                         <th>Student number</th>
                         <th>Student name</th>
                         <th>Mark</th>
                         <th>Comments</th>
                       </tr>
      
                 <?php
      
                  foreach ($data as $data)
                  {
                      echo"<tr>";
                      echo"<td>".$data["sName"]."</td>";
                      echo"<td>".$data["sNumber"]."</td>";
      
                      echo"<td>".$data["mark"]."</td>";
                      echo"<td>".$data["comments"]."</td>";
                      echo"</tr>";
                  }
                  ?>
      
                       <tr>
                         <td>Something</td>
                       </tr>
                   </thead>
         </table>
       </div>
      

      您还缺少一些关闭 &lt;/div&gt; 的内容,但这超出了本问题的范围。你需要把它们匹配起来。

      【讨论】:

        猜你喜欢
        • 2020-05-10
        • 2018-04-04
        • 1970-01-01
        • 2017-08-29
        • 1970-01-01
        • 1970-01-01
        • 2013-11-02
        • 1970-01-01
        • 2014-02-14
        相关资源
        最近更新 更多