PHP中的多维数组到表中

时间:2017-03-14 07:41:03

标签: php arrays multidimensional-array html-table

我希望你能帮助我完成我的任务。我还是新的PHP语言。我有这样的案例:

<!DOCTYPE html>
<html>
<head>
  <style>
    table, th, td {
        border: 1px solid black;
        border-collapse: collapse;
    }
    th, td {
        padding: 5px;
        text-align: left;
    }
  </style>
</head>
<body>
<?php
$ub = array(
    array(
        "Fakultas Ilmu Komputer",
        array(
            "Jurusan Teknik Informatika",
            array(
                "Prodi Teknik Informatika",
                "Prodi Teknik Komputer",
                "Prodi Magister Ilmu Komputer"
            )
        ),
        array(
            "Jurusan Sistem Informasi",
            array(
                "Prodi Sistem Informasi",
                "Prodi Teknologi Informasi",
                "Prodi Pendidikan Teknologi Informasi"
            )
        )
    ),
    array(
        "Fakultas Kedokteran",
        array(
            "Jurusan Kedokteran",
            array(
                "Prodi Pendidikan Dokter"
            )
        ),
        array(
            "Jurusan Keperawatan dan Gizi",
            array(
                "Prodi Ilmu Keperawatan",
                "Prodi Ilmu Gizi",
                "Prodi Farmasi",
                "Prodi Kebidanan"
            )
        )
    )			
);		
?>
<table>
    <tr>
        <th>Fakultas</th>
        <th>Jurusan</th>
        <th>Program Studi</th>
    </tr>
</table>
</body>
</html>

结果必须是这样的:
enter image description here

我该怎样做一个像这样的桌子?我试过这个,但它不起作用:

for($baris = 0 ; $baris < 2 ; $baris++ ) {
    echo $ub[$baris][0] ; $baris++;} ?>
    </th>
    <th>
    <?php 
    for($barisa = 0 ; $barisa < 2 ; $barisa++ ) {
        echo $ub[$barisa+1][1];
        $barisa++;
    }
    ?>
    </th>
    <th>
    <?php 
    for($barisb = 0 ; $barisb < 4 ; $barisb++ ) {
        echo $ub[$barisb+1][2] ;
        $barisb++;
    }
    ?>
    </th>

谢谢。

2 个答案:

答案 0 :(得分:1)

你应该稍微改变你的数组,所以所有的列都在同一级别上:

  <?php
    $ub = array(
      "Fakultas Ilmu Komputer" => array(
                                    array(
                                        "Jurusan Teknik Informatika",
                                        array(
                                            "Prodi Teknik Informatika",
                                            "Prodi Teknik Komputer",
                                            "Prodi Magister Ilmu Komputer"
                                        )
                                    ),
                                    array(
                                        "Jurusan Sistem Informasi",
                                        array(
                                            "Prodi Sistem Informasi",
                                            "Prodi Teknologi Informasi",
                                            "Prodi Pendidikan Teknologi Informasi"
                                        )
                                    )
                                ),
    "Fakultas Kedokteran" => array(
                                    array(
                                        "Jurusan Kedokteran",
                                        array(
                                            "Prodi Pendidikan Dokter"
                                        )
                                    ),
                                    array(
                                        "Jurusan Keperawatan dan Gizi",
                                        array(
                                            "Prodi Ilmu Keperawatan",
                                            "Prodi Ilmu Gizi",
                                            "Prodi Farmasi",
                                            "Prodi Kebidanan"
                                        )
                                    )
                                )
  );

    ?>

之后,您必须跟踪表格的所有“内部行”并打印嵌套在最深循环中的行。像这样:

<?php
foreach($ub as $fakultas => $jurusan) {
    $fakultasLine = true;

    // calculate inside rows per row
    $insideRows = 0;
    foreach($jurusan as $program) {
        foreach($program[1] as $studi) {
            $insideRows++;
        }
    }
    foreach($jurusan as $program) {
        $jurusanLine = true;
        foreach($program[1] as $studi) {
            echo '<tr>';
            if($fakultasLine) {
                echo '<td rowspan="' . $insideRows . '">' . $fakultas . '</td>';
                $fakultasLine = false;
            }
            if($jurusanLine) {
                echo '<td rowspan="' . count($program[1]) . '">' . $program[0] . '</td>';
                $jurusanLine = false;
            }
            echo '<td>' . $studi . '</td>';
            echo '</tr>';
        }
    }
}
?>

您的完整代码段看起来有点像这样:

<!DOCTYPE html>
<html>

<head>
  <style>
    table,
    th,
    td {
      border: 1px solid black;
      border-collapse: collapse;
    }

    th,
    td {
      padding: 5px;
      text-align: left;
    }
  </style>
</head>

<body>

  <?php
    $ub = array(
      "Fakultas Ilmu Komputer" => array(
                                    array(
                                        "Jurusan Teknik Informatika",
                                        array(
                                            "Prodi Teknik Informatika",
                                            "Prodi Teknik Komputer",
                                            "Prodi Magister Ilmu Komputer"
                                        )
                                    ),
                                    array(
                                        "Jurusan Sistem Informasi",
                                        array(
                                            "Prodi Sistem Informasi",
                                            "Prodi Teknologi Informasi",
                                            "Prodi Pendidikan Teknologi Informasi"
                                        )
                                    )
                                ),
    "Fakultas Kedokteran" => array(
                                    array(
                                        "Jurusan Kedokteran",
                                        array(
                                            "Prodi Pendidikan Dokter"
                                        )
                                    ),
                                    array(
                                        "Jurusan Keperawatan dan Gizi",
                                        array(
                                            "Prodi Ilmu Keperawatan",
                                            "Prodi Ilmu Gizi",
                                            "Prodi Farmasi",
                                            "Prodi Kebidanan"
                                        )
                                    )
                                )
  );

    ?>

    <table>
      <tr>
        <th>Fakultas</th>
        <th>Jurusan</th>
        <th>Program Studi</th>
      </tr>

<?php
foreach($ub as $fakultas => $jurusan) {
    $fakultasLine = true;

    // calculate inside rows per row
    $insideRows = 0;
    foreach($jurusan as $program) {
        foreach($program[1] as $studi) {
            $insideRows++;
        }
    }
    foreach($jurusan as $program) {
        $jurusanLine = true;
        foreach($program[1] as $studi) {
            echo '<tr>';
            if($fakultasLine) {
                echo '<td rowspan="' . $insideRows . '">' . $fakultas . '</td>';
                $fakultasLine = false;
            }
            if($jurusanLine) {
                echo '<td rowspan="' . count($program[1]) . '">' . $program[0] . '</td>';
                $jurusanLine = false;
            }
            echo '<td>' . $studi . '</td>';
            echo '</tr>';
        }
    }
}
?>


    </table>
</body>

</html>

答案 1 :(得分:-1)

你想要的就是这个,

https://gist.github.com/hsharma-lsquared/94f10b8182e5ef3e8c465a2cd5159edb

另请告诉我它是否适合您...