在数组递归中添加数据 php

Add data in array recursive php

我有一个小问题,我有很多目录,其中包含其他目录和文件。我想使用我拥有的递归方式获取所有目录名称:

function getNomDossier($dir){
    $root = scandir($dir); //scanne le dossier
    $nom = [];
    foreach ($root as $value) {
        $variable = "$dir/$value";
        if ($value === '.' || $value === '..' || $value === '.DS_Store') {
            continue;
        }
        //on teste si c'est un dossier
        if (is_dir($variable)){
            array_push($nom, $value);
            getNomDossier($variable);

        }
    }

    return $nom;
}

这样做时我只有第一个“扫描”,它不会进入目录再次扫描并推入 $nom...

抱歉,如果不清楚,谢谢您的帮助

你正在检查 $variable 是否是一个目录,然后将 $value 压入 $nom 您只是忘记将 getNomDossier 返回的值推送到 $nom。所以要解决你的问题更换:

getNomDossier($variable); 

有了这个:

$nom = array_merge($nom, getNomDossier($variable));

代码应如下所示:

function getNomDossier($dir){
    $root = scandir($dir); //scanne le dossier
    $nom = [];
    foreach ($root as $value) {
        $variable = "$dir/$value";
        if ($value === '.' || $value === '..' || $value === '.DS_Store') {
            continue;
        }
        //on teste si c'est un dossier
        if (is_dir($variable)){
            array_push($nom, $value);
            $nom = array_merge($nom, getNomDossier($variable));
        }
    }

    return $nom;
}