【问题标题】:Displaying an Multidimensional associative array as a table in PHP在 PHP 中将多维关联数组显示为表格
【发布时间】:2021-01-10 18:52:30
【问题描述】:

我正在研究 PHP 中的关联数组。在这里,我制作了一个多重关联数组。我想以表格形式显示我的数组。数组是

<?php

$schoolDetails = array(
    //First School Details
    array(
        
        array("schoolName" => "TCS"),


        array(
            "branchName"       => "Iqbal Campus",
            "phone"            => "052-4667281",
            "numberofTeachers" => 51
        ),

        array(
            "departmentName" => "Maths",
            "HOD"            => "Mr Ali"
        ),
        array(
            "departmentName" => "Science",
            "HOD"            => "Mr Imran"
        )

    ),
    array(

        array("schoolName" => "CSS"),
        array(
            "branchName"       => "Gohdpur Campus",
            "phone"            => "052-4667281",
            "numberofTeachers" => 20
        ),
        array(
            "departmentName" => "Chemistry",
            "HOD"            => "Mr Abdullah"
        ),
        array(
            "departmentName" => "Computer",
            "HOD"            => "Mr Naeem"
        )

    ),

);

我尝试显示数据的方式如下:

  <table class="table table-bordered" id="dataTable" width="100%" cellspacing="0">
                                        <thead>
                                            <tr>
                                                <th>School Name</th>
                                                <th>Branch Name</th>
                                                <th>Phone Number</th>
                                                <th>Number of Teachers</th>
                                                <th>Department Name</th>
                                                <th>HOD</th>
                                            </tr>
                                        </thead>
                                        <tfoot>
                                            <tr>
                                            <th>School Name</th>
                                                <th>Branch Name</th>
                                                <th>Phone Number</th>
                                                <th>Number of Teachers</th>
                                                <th>Department Name</th>
                                                <th>HOD</th>
                                            </tr>
                                        </tfoot>
                                        <tbody>
                                            <?php  foreach ($schoolDetails as $school) {
                                                    foreach ($school as $schools) {
                                                        foreach ($schools as $key => $value) {?>
                                            <tr>
                                                            <td><?php echo $value; ?></td>
                                            </tr>
                                            <?php }}}?>

        
                                        </tbody>
                                    </table>

但我没有在正确的行和列中得到结果。那么我应该怎么做才能以精确的表格形式显示它,因为我从未经历过这种任务。

【问题讨论】:

    标签: php arrays multidimensional-array html-table associative-array


    【解决方案1】:
    foreach($schoolDetails as $schoolDetail) {
        echo "<tr>";
        echo "<td>{$schoolDetail[0]["schoolName"]}</td>";
        echo "<td>{$schoolDetail[1]["branchName"]}</td>";
        echo "<td>{$schoolDetail[1]["phone"]}</td>";
        echo "<td>{$schoolDetail[1]["numberofTeachers"]}</td>";
    
        if(!empty($schoolDetail[3]['departmentName'])) {
    
            echo "<td>{$schoolDetail[2]["departmentName"]}" . ", " . "{$schoolDetail[3]["departmentName"]}</td>"; 
    
        } else {
    
            echo "<td>{$schoolDetail[2]["departmentName"]}</td>";
    
        }
    
        if(!empty($schoolDetail[3]['HOD'])) {
    
            echo "<td>{$schoolDetail[2]["HOD"]}" . ", " . "{$schoolDetail[3]["HOD"]}</td>"; 
    
        } else {
    
            echo "<td>{$schoolDetail[2]["HOD"]}</td>"; 
        
        }
    
        echo "</tr>";
    }
    

    【讨论】:

      【解决方案2】:

      首先,您似乎在新行而不是新列中添加值:

      <tr>
          <td><?php echo $value; ?></td>
      </tr>
      

      &lt;tr&gt;tags 添加新的表格行。它们应该添加到最后一个循环之外。

      下一个问题是每所学校的值比表格列的数量多。每所学校都有一个以上的部门。应该如何在表格中显示?

      <?php
       foreach ($schoolDetails as $school) {
           echo "<tr>";
           echo "<td>{$school[0]["Schoolname"]}</td>";
           echo "<td>{$school[1]["branchName"]}</td>";
           echo "<td>{$school[1]["phone"]}</td>";
           echo "<td>{$school[1]["numberofTeachers"]}</td>";
           echo "<td>{$school[2]["departmentName"]}</td>";
           echo "<td>{$school[2]["HOD"]}</td>"; 
           echo "</tr>";
       }
      

      但是,上面的代码只会列出第一个部门...您需要提供有关如何显示其余部分的更多信息...

      【讨论】:

      • 它缺少$school[3] 数据。 departmentName 大于 1,而不是 FIT 这个
      • 我希望所有的部门都被列出来反对它的学校。例如 TCS 是学校名称,因此它必须显示其所有相关部门和部门的相关教师。
      【解决方案3】:

      @Gowire 答案只是修改。

       foreach ($schoolDetails as $school) {
           echo "<tr>";
           echo "<td>{$school[0]["schoolName"]}</td>";
           echo "<td>{$school[1]["branchName"]}</td>";
           echo "<td>{$school[1]["phone"]}</td>";
           echo "<td>{$school[1]["numberofTeachers"]}</td>";
           echo "<td>{$school[2]["departmentName"]}</td>";
           echo "<td>{$school[2]["HOD"]}</td>"; 
           echo "</tr>";
           for($i=3;$i<=5;$i++){
              if(isset($school[$i])){
                   echo "<tr>";
                   echo "<td></td>";
                   echo "<td></td>";
                   echo "<td></td>";
                   echo "<td></td>";
                   echo "<td>{$school[$i]["departmentName"]}</td>";
                   echo "<td>{$school[$i]["HOD"]}</td>"; 
                   echo "</tr>"; 
              }
           }
       }
      

      【讨论】:

        猜你喜欢
        • 2021-01-12
        • 2023-03-14
        • 1970-01-01
        • 2014-05-17
        • 1970-01-01
        • 2011-10-13
        • 2018-10-14
        • 2021-02-20
        • 1970-01-01
        相关资源
        最近更新 更多