function mkDirs1($path){
if(is_dir($path)){//已经是目录了就不用创建
return true;
}
if(is_dir(dirname($path))){//父目录已经存在,直接创建
return mkdir($path);
}
mkDirs1(dirname($path));//从子目录往上创建
return mkdir($path);//因为有父目录,所以可以创建路径
}
//mkDirs1('1/2/3/');
Cette récursion a été recherchée sur Internet. Plus je lis ses commentaires, plus je suis devenu confus
La récursion suivante a la même fonction que celle-ci
$path = '11/22/33/44';
// 归前的语句顺序执行,递归后的语句倒序执行
function mkdirs($path)
{
if(is_dir($path)){
return;
}
mkdirs( dirname($path) );
return $path;
// mkdir($path);
}
mkdirs($path);
Aidez-vous à analyser la différence entre les fonctions suivantes ?
Le premier commentaire récursif est-il correct ?
La récursion dans l'exemple est correcte. Elle peut être remplacée par une fonction : mkdir($sPath,0777,true); le troisième paramètre est la création récursive
Le deuxième est faux. Vous avez commenté mkdir. Quelle que soit la façon dont vous récurez, vous ne pouvez pas créer le répertoire et l'emplacement de mkdir est incorrect :
Concernant l'explication, vous substituez les paramètres et analysez étape par étape.
Essayez d'analyser quelques paramètres et essayez :
"./a"
"./a/b"
"./a/b/c"
"./a/b/c/d"
... ....