• Выводится только последний элемент массива в цикле foreach. Что делать?

    @MikUrrey
    Навскидку - вы данние пишете в массив $dec, а выводить их пытаетесь из $val:
    $dec = json_decode($f, true);
    
            // for($val = 0; $val < count($dec); $val++) {
            //     echo "<tr>";
            //     echo "<td>".$val["name"]."</td>";
            //     echo "<td>".$val["number"]."</td>";
            //     echo "<td>".$val["date"]."</td>";
            //     echo "<td>".$val["time"]."</td>";
            //     echo "</tr>";       
            // }

    и формат данных в JSON у вас смешанный, многомерный, а вы его как плоский список перебирали.

    Наиболее универсально - применить рекурсию:
    <?php
    function printDec($dec) {
        foreach ($dec as $k => $item) {
            if ($k === "0" || $k === 0) {
                printDec($item);
            } else if ($k === "name") {
                echo "<tr>";
                echo "<td>".$item."</td>";
            } else if ($k === "time") {
                echo "<td>".$item."</td>";
                echo "</tr>\n";
            } else {
                echo "<td>".$item."</td>";
            }
        }
    }
    $f = file_get_contents("data.json");
    $dec = json_decode($f, true);
    printDec($dec);
    Ответ написан
    6 комментариев