在递归php数组中添加数据
我有一个小问题,我有很多包含其他目录和文件的目录。我希望使用递归方式获取所有目录名:在递归php数组中添加数据,php,recursion,array-push,Php,Recursion,Array Push,我有一个小问题,我有很多包含其他目录和文件的目录。我希望使用递归方式获取所有目录名: function getNomDossier($dir){ $root = scandir($dir); //scanne le dossier $nom = []; foreach ($root as $value) { $variable = "$dir/$value"; if ($value === '.' || $value =
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是否为目录,然后在$nom中推送$value 您只是忘记了将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;
}