Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.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
父ID为的PHP文件夹数组_Php_Arrays_Directory Structure - Fatal编程技术网

父ID为的PHP文件夹数组

父ID为的PHP文件夹数组,php,arrays,directory-structure,Php,Arrays,Directory Structure,我试图列出一个目录中的所有文件夹(仅限于),并使用php为它们分配一个ID和一个父ID以及文件夹的路径,并生成 (folderID,“folderName”,父ID,路径) 到目前为止,我发现了一个函数,该函数将在多维数组中列出所有文件夹,如下所示: function listFolders($dir) { $dh = scandir($dir); $return = array(); foreach ($dh as $folder) { if ($fo

我试图列出一个目录中的所有文件夹(仅限于),并使用php为它们分配一个ID和一个父ID以及文件夹的路径,并生成 (folderID,“folderName”,父ID,路径)

到目前为止,我发现了一个函数,该函数将在多维数组中列出所有文件夹,如下所示:

function listFolders($dir)
{
    $dh = scandir($dir);
    $return = array();

    foreach ($dh as $folder) {
        if ($folder != '.' && $folder != '..') {
            if (is_dir($dir . '/' . $folder)) {
                $return[] = array($folder => listFolders($dir . '/' . $folder));
            } else {
                $return[] = $folder;
            }
        }
    }
    return $return;
}
这将返回类似以下内容的数组:

Array
(
    [0] => Array
        (
            [level1] => Array
                (
                    [0] => New file.txt
                    [1] => Array
                        (
                            [level2] => Array
                                (
                                )

                        )

                    [2] => Array
                        (
                            [level2a] => Array
                                (
                                )

                        )

                    [3] => Array
                        (
                            [level2b] => Array
                                (
                                )

                        )

                )

        )

    [1] => Array
        (
            [level1a] => Array
                (
                )

        )

)
(1,"level1",0,"")
(2,"level2",0,"")
(3,"level3",0,"")
(4,"level2a",2,"")
(5,"level2b",4,"")
(6,"level1a",8,"")
然后我通过另一个函数运行它:

$i = 0;
    $j = 1;

    function recursive_foreach($array) 
    {
        global $i, $j ;

        $out = '';
        foreach($array as $key => $value) 
        {
            if (!is_numeric($key))
            {           
                $out .=  "($j,\"$key\",$i,\"\")<br />";
                $j++;
            }
            else
            {

            }

            if(is_array($value)) 
            {
                $out .= recursive_foreach($value);
                $i++;
            }
        }
        return $out;
    }
这接近于我需要的,但我的父ID有问题。我需要的输出是:

(1,"level1",0,"path")
(2,"level2",1,"path")
(3,"level3",2,"path")
(4,"level2a",1,"path")
(5,"level2b",1,"path")
(6,"level1a",0,"path")
其中每个级别都有正确的父id和文件夹路径

关于如何做到这一点,我已经没有什么想法/知识了。有人能帮我吗