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

时间:2013-09-18 05:39:48

标签: php arrays variables

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

这是我的代码:

<?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>

2 个答案:

答案 0 :(得分:1)

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

2)您可能错过了这个,因为您的代码格式不正确。如果你避免“回显”你不需要的HTML块,IDE的语法高亮可能能够发现这个错误(取决于你的IDE),它也使你的代码更加清晰。

答案 1 :(得分:0)

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

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