在数组递归中添加数据 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;
}
我有一个小问题,我有很多目录,其中包含其他目录和文件。我想使用我拥有的递归方式获取所有目录名称:
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;
}