PHP Многомерный JSON Массив до HTML Таблица - PullRequest
1 голос
/ 12 февраля 2020

У меня есть многомерный массив JSON, и я хотел бы сгенерировать в этих данных bacis HTML table basi c.

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
        }
    }
]

Мне нужно l oop просмотреть эти данные и отобразить date, floor и room_name в левой колонке. Я могу это сделать, однако мне также нужно отобразить hour и room_status в одной ячейке таблицы. Я не знаю, как этого добиться.

Мне нужно, чтобы моя финальная таблица выглядела следующим образом (обратите внимание, я буду заменять целые числа на строки в финальной таблице, т.е. 0 = false, 1 = true, et c);

+------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
| 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).

My 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 l oop для доступа к ключу и значениям hour, но я не могу понять это: /

Любая помощь приветствуется.

Ответы [ 3 ]

4 голосов
/ 12 февраля 2020

Я думаю, это то, что вы ищете:

$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; ?>
1 голос
/ 12 февраля 2020
foreach( $room['hour'] as $hour) 
{
...
}

и так далее ... вложенные в ваш foreach

1 голос
/ 12 февраля 2020

Есть лучшие способы сделать стол, но это должно достичь того, что вы ищете;

$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; ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...