Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在侧边栏中显示文件夹和子文件夹_Php_Html_For Loop_Foreach_While Loop - Fatal编程技术网

Php 在侧边栏中显示文件夹和子文件夹

Php 在侧边栏中显示文件夹和子文件夹,php,html,for-loop,foreach,while-loop,Php,Html,For Loop,Foreach,While Loop,我有一个文件夹“服务器”,在服务器内部我有另一个文件夹“computer1”和“computer2”,在computer1内部我有更多文件夹,在computer2内部我也有更多文件夹 所以我有一个侧边栏,直到现在我把它放在计算机1和计算机2上 <ul class="nav side-menu"> <?php foreach (glob('server/sandro/*', GLOB_ONLYDIR)as$subfolder

我有一个文件夹“服务器”,在服务器内部我有另一个文件夹“computer1”和“computer2”,在computer1内部我有更多文件夹,在computer2内部我也有更多文件夹

所以我有一个侧边栏,直到现在我把它放在计算机1和计算机2上

<ul class="nav side-menu">
             <?php

              foreach (glob('server/sandro/*', GLOB_ONLYDIR)as$subfolder) {
                  echo '<li><a><i class="fa fa-home"></i>'. basename($subfolder) .'<span class="fa fa-chevron-down"></span></a>';
                  echo '<ul class="nav child_menu">';
                  echo '</ul>';
                  echo '</li>';
              }

             ?>
            </ul>
这是结果,但现在我想在
echo'
    ; 回声“

计算机1和计算机2内部的其余子文件夹

<ul class="nav side-menu">
             <?php

              foreach (glob('server/sandro/*', GLOB_ONLYDIR)as$subfolder) {
                  echo '<li><a><i class="fa fa-home"></i>'. basename($subfolder) .'<span class="fa fa-chevron-down"></span></a>';
                  echo '<ul class="nav child_menu">';
                  echo '</ul>';
                  echo '</li>';
              }

             ?>
            </ul>

请帮帮我。

您好,您必须使用
函数
并调用函数本身

<ul class="nav side-menu">

<?php
function foldersList($folderName = NULL) {

$return = '';

foreach (glob('./server/sandro/' . $folderName . '*', GLOB_ONLYDIR) as $subfolder) {

    // call function to check subfolders - don't forget write `/`
    $subFolders = foldersList(basename($subfolder). '/');

    $return .= '<li><a><i class="fa fa-home"></i>' . basename($subfolder) . '<span class="fa fa-chevron-down"></span></a>';
    $return .= '<ul class="nav child_menu">';

    // if subfolder exist add to return variable
    $return .= $subFolders != '' ? $subFolders : '';

    $return .= '</ul>';
    $return .= '</li>';
   }

   return $return;
}

echo foldersList();
?>
</ul>

    只需重复该命令,但使用
    $subfolder
    而不是
    foreach
    命令中的*即可。我这样做,但没有任何更改,如果我使用*显示代码,则情况相同,这样我们就可以看到出错的地方。您需要一个递归函数,这是一个调用自身的函数。对于它找到的每个“父”目录,您都希望在其“子”目录上调用相同的函数。嘿,谢谢。但是现在,我不知道发生了什么,但是当我把(glob('./'.$FolderName…)放进去的时候,它可以工作了,但是如果我改成glob('server/sandro/'.$FolderName…),当你写
    (glob>)时,会出现computer1和computer2,而不是相应的子文件夹('./'.$FolderName…
    它将读取php文件所在的文件夹和子文件夹。@Sandromedeiros是计算机或服务器上
    根目录下的“服务器/”文件夹?但我想要(全局)('server/sandro/'…并读取/server/sandro/的文件夹和子文件夹意味着,.php文件不位于
    server/sandro
    yes?