簡體   English   中英

PHP 多維 JSON 數組轉 HTML 表格

[英]PHP Multidimensional JSON Array to HTML Table

我有一個多維 JSON 數組,我想在此數據中生成一個基本的 bacis HTML 表。

JSON 采用以下格式 -此處鏈接

[
    {
        "id": 1,
        "date": "10.02.2020",
        "floor": "Ground",
        "room_name": "G01",
        "room_status": 1,
        "hour": {
            "08": 1,
            "09": 2,
            "10": 1,
            "11": 2,
            "12": 0,
            "13": 1,
            "14": 2,
            "15": 2,
            "16": 1,
            "17": 0,
            "18": 1,
            "19": 1,
            "20": 0
        }
    },
    {
        "id": 2,
        "date": "10.02.2020",
        "floor": "Ground",
        "room_name": "G02",
        "room_status": 2,
        "hour": {
            "08": 1,
            "09": 1,
            "10": 0,
            "11": 0,
            "12": 0,
            "13": 0,
            "14": 1,
            "15": 1,
            "16": 0,
            "17": 1,
            "18": 1,
            "19": 1,
            "20": 1
        }
    },
    {
        "id": 3,
        "date": "10.02.2020",
        "floor": "Ground",
        "room_name": "G03",
        "room_status": 1,
        "hour": {
            "08": 0,
            "09": 2,
            "10": 2,
            "11": 2,
            "12": 0,
            "13": 2,
            "14": 1,
            "15": 0,
            "16": 1,
            "17": 1,
            "18": 1,
            "19": 2,
            "20": 2
        }
    },
    {
        "id": 4,
        "date": "10.02.2020",
        "floor": "Ground",
        "room_name": "G04",
        "room_status": 2,
        "hour": {
            "08": 1,
            "09": 2,
            "10": 2,
            "11": 1,
            "12": 1,
            "13": 0,
            "14": 0,
            "15": 1,
            "16": 0,
            "17": 2,
            "18": 0,
            "19": 1,
            "20": 2
        }
    },
    {
        "id": 5,
        "date": "10.02.2020",
        "floor": "Ground",
        "room_name": "G05",
        "room_status": 2,
        "hour": {
            "08": 1,
            "09": 2,
            "10": 1,
            "11": 0,
            "12": 0,
            "13": 0,
            "14": 2,
            "15": 1,
            "16": 1,
            "17": 2,
            "18": 2,
            "19": 1,
            "20": 1
        }
    }
]

我需要遍歷這些數據並在左側列中顯示datefloorroom_name 我能夠做到這一點,但是我還需要在同一個表格單元格中顯示hourroom_status 我不知道如何實現這一目標。

我需要我的決賽桌看起來像這樣(請注意,我將在決賽桌中將整數更改為字符串,即0 = false1 = true等);

+------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
| Room       |     |     |     |     |     |     |     |     |     |     |     |     |     |
+------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
| 10.02.2020 | 08  | 09  | 10  | 11  | 12  | 13  | 14  | 15  | 16  | 17  | 18  | 19  | 20  |
| Ground     |     |     |     |     |     |     |     |     |     |     |     |     |     |
| G01        | 1   | 2   | 1   | 2   | 0   | 1   | 2   | 2   | 1   | 0   | 1   | 1   | 0   |
+------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
| 10.02.2020 | 08  | 09  | 10  | 11  | 12  | 13  | 14  | 15  | 16  | 17  | 18  | 19  | 20  |
| Ground     |     |     |     |     |     |     |     |     |     |     |     |     |     |
| G02        | 1   | 1   | 0   | 0   | 0   | 0   | 1   | 1   | 0   | 1   | 1   | 1   | 1   |
+------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
| 10.02.2020 | 08  | 09  | 10  | 11  | 12  | 13  | 14  | 15  | 16  | 17  | 18  | 19  | 2   |
| Ground     |     |     |     |     |     |     |     |     |     |     |     |     |     |
| G02        | 0   | 2   | 2   | 2   | 0   | 2   | 1   | 0   | 1   | 1   | 1   | 2   |     |
+------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
| etc        | etc | etc | etc | etc | etc | etc | etc | etc | etc | etc | etc | etc | etc |
+------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+

在上表中, hour是單元格中的最高值(08 到 20),而room_status是下面的值(0、1 或 2)。

我的 PHP 代碼是;

$string = file_get_contents("data.json");
$json = json_decode($string, true);

<?php foreach($json as $room): ?>
    <tr>
        <td>
            <p><?php echo $room['date']; ?></p>
            <p><?php echo $room['floor']; ?></p>
            <p><?php echo $room['room_name']; ?></p>
        </td>
        // need help with populating the other table cells here
    </tr>
<?php endforeach; ?>

我知道我需要某種嵌套的 foreach 循環才能訪問hour鍵和值,但我無法弄清楚:/

任何幫助表示贊賞。

我認為這就是你要找的:

$string = file_get_contents("data.json");
$json = json_decode($string, true);

<?php foreach($json as $room): ?>
    <tr>
        <td>
            <p><?php echo $room['date']; ?></p>
            <p><?php echo $room['floor']; ?></p>
            <p><?php echo $room['room_name']; ?></p>
        </td>
        <?php foreach($room['hour'] as $hour => $status): ?>
          <td>
            <p><?php echo $hour; ?></p>
            <p><?php echo $status; ?></p>
          </td>
        <?php endforeach; ?>    
    </tr>
<?php endforeach; ?>

有更好的制作桌子的方法,但這應該可以達到您的要求;

$string = file_get_contents("data.json");
$json = json_decode($string, true);

<?php foreach($json as $room): ?>
    <tr>
        <td>
            <p><?php echo $room['date']; ?></p>
            <p><?php echo $room['floor']; ?></p>
            <p><?php echo $room['room_name']; ?></p>
        </td>
        <?php 
            foreach($room["hour"] as $hour => $status){
                echo "<td>" $hour . "<br/>" . $status . "</td>"
            }
        ?>
    </tr>
<?php endforeach; ?>
foreach( $room['hour'] as $hour) 
{
...
}

等等......嵌套在你的 foreach 中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM