Навскидку - вы данние пишете в массив $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);