Ma première pensée est présente.
$is_empty = (bool) (count(scandir($folder)) == 2);
Si je crée un dossier et d'exécuter cela, il me dit que le dossier est vide. Si je mets un fichier, un dossier ou un lien symbolique dans le dossier, puis exécutez-Im dit le dossier n'est pas vide.
Elle le fait parce scandir reviendra point (dossier en cours) et point-point (pare pas du dossier) par eux-mêmes si le dossier est vide. Donc, si le nombre de résultats retournés à partir scandir est de deux, le dossier doit être vide.
-
Il semble assez inefficace pour rassembler toute la liste des fichiers d'un dossier pour le compte lorsque nous voulons juste savoir si un dossier est vide si. Surtout quand on pense que les sortes scandir cette liste avant de la renvoyer.
Une autre façon serait d'utiliser opendir readdir et.
$dh = opendir($directory);
for($i = 3; $i; $i--)
{
$is_empty = (bool) (readdir($dh) === FALSE);
}
closedir($dh);
- $dh = opendir($directory);
- for($i = 3; $i; $i--)
- {
- $is_empty = (bool) (readdir($dh) === FALSE);
- }
- closedir($dh);
L'idée derrière cela est que les deux premiers résultats retournés par readdir seront point et point-point. Si on saute devant eux, et reçoivent autre chose qu'un booléen faux, nous savons immédiatement le répertoire n'est pas vide. Si ont reçu le faux, nous savons de son vide. Dans les deux cas theres aucun besoin de chercher plus loin dans le répertoire et nous pouvons le fermer et de passer. readdir, à l'exception du point et point-point étant toujours au début theyre spéciale parce que par défaut, sera de retour les choses comme theyre trouvé sur le système de fichiers, il ne trie pas quelque chose de semblable ne scandir.
Strong with this one, the sudo is.