无法将数据排列为表格格式


Can't arrange data into a table format

据我所知,我无法将其正确放入表结构中,但据我所知,所有编码都是正确的,但由于某种原因它不起作用。

这是我的代码:

<?php
    echo "<table class='array'>
        <tr><th>&nbsp;&nbsp; Employee &nbsp;&nbsp;&nbsp;</th>
        <th>In Que &nbsp;&nbsp;&nbsp;</th>
        <th>Incomplete &nbsp;&nbsp;&nbsp;</th>
        <th>Processed </th></tr>";
    $count_result=array();
    $path = "Users";
    $folders = @scandir("$path");
    if ($folders) {
        foreach ($folders as $item) {
            $count = 0;
            if ((substr($item, 0, 1) == '.') || (preg_match("/'.php$/", $item)))
                continue;
            if (is_dir($path . "/" . $item)) {
                $target_folders = @scandir($path . "/" . $item . "/uploaded/");   
                if ($target_folders) {
                    foreach ($target_folders as $target_item) { 
                        if ((substr($target_item, 0, 1) == '.') || is_dir("$path/$item/uploaded/$target_item"))
                            continue;
                        $count++;
                    }
                }
                $count_result[$item]=$count;
            }
             echo "<tr><td><div class='data'>" .$item."
                </div></td>";
             echo "<td><div class='data1'>" .$count."
                </div></td>";
        }
    }
?>
<?php
    $counta_result=array();
    $path = "Users";
    $foldersa = @scandir("$path");
    if ($foldersa) {
        foreach ($foldersa as $itema) {
            $counta = 0;
            if ((substr($itema, 0, 1) == '.') || (preg_match("/'.php$/", $itema)))
                continue;
            if (is_dir($path . "/" . $itema)) {
                $target_foldersa = @scandir($path . "/" . $itema . "/incomplete/");
                if ($target_foldersa) {
                    foreach ($target_foldersa as $target_itema) {
                        if ((substr($target_itema, 0, 1) == '.') || is_dir("$path/$itema/uploaded/$target_itema"))
                            continue;
                        $counta++;
                    }
                }
                $counta_result[$itema]=$counta;
            }
            echo "<td><div class='data2'>" .$counta."</div></td>";
        }
    } 
?>
<?php
    $countb_result=array();
    $path = "Users";
    $foldersb = @scandir("$path");
    if ($foldersb) {
        foreach ($foldersb as $itemb) {
            $countb = 0;
            if ((substr($itemb, 0, 1) == '.') || (preg_match("/'.php$/", $itemb)))
                continue;
            if (is_dir($path . "/" . $itemb)) {
                $target_foldersb = @scandir($path . "/" . $itemb . "/processed/");
                if ($target_foldersb) {
                    foreach ($target_foldersb as $target_itemb) {
                        if ((substr($target_itemb, 0, 1) == '.') || is_dir("$path/$itemb/processed/$target_itemb"))
                            continue;
                        $countb++;
                    }
                }
                $countb_result[$itemb]=$countb;
            }
            echo "<td><div class='data3'>" .$countb."</div></td></tr>";
        }
    } 
?>
</table>

1)实际问题的答案是,您在初始 for 循环中缺少一个</tr>,在第二个 for 循环中缺少一个开<tr>。所以,要么你实际上错过了这些东西,要么你的括号有问题。

2)你可能错过了这一点,因为你的代码格式很差。如果您避免在不必要的位置"回显"HTML块,IDE的语法突出显示可能会发现此错误(取决于您的IDE),这也使您的代码更加干净。

您正在迭代同一组项目三次。第一个循环在每次迭代开始时创建一个<tr>,最后一个循环在每次迭代结束时创建一个</tr>。因此,第一个循环"正常工作",填充前两列,然后移动到下一行。然后,第二个只是将其所有数据放在最后一行,第三个添加数据和新行。与其遍历相同的数据三次,不如只使用一个循环来根据需要填充列。在每次迭代的最开始时,添加一个<tr>,并在最后添加一个</tr>

看到这个小提琴。这无法访问您需要的任何目录,所以我用 array_fill s 替换了scandir调用,但您可以看到格式是应该的。注意:对代码进行大量额外的优化;这只是为了表明将三个循环合二为一将有助于解决此特定问题。