Php检查目录是否为空[duplicate]

Php check if directory is empty [duplicate]

提问人:Midhat 提问时间:7/20/2023 更新时间:7/22/2023 访问量:55

问:

我正在尝试使用php来检查目录是否为空。我见过很多类似的问题,但我无法解决问题。也就是说,以下代码总是给我一个目录不为空的结果:

<?php
function is_dir_empty($dir) {
    if (!is_readable($dir)) return NULL;
    $files = array_diff(scandir($dir), array('.', '..'));
    return empty($files);
}

$dir = 'images/tmp';
if (is_dir_empty($dir)) {
    echo "The folder is empty";
} else {
    echo "The folder is NOT empty";
}
?>

目录权限为 755,路径正确。我也尝试过这个函数,但结果是一样的:

function is_dir_empty($dir) {
    if (!is_readable($dir)) return NULL;
    $files = glob("$dir/*");
    return empty($files);
}

php 是空

评论

1赞 shingo 7/20/2023
做了什么,又回来了?is_readablescandir
0赞 Midhat 7/20/2023
@shingo 如何检查?
0赞 A.L 7/20/2023
您能解释一下用例吗?根据你想用这个结果做什么,也许还有其他解决方案。例如,一个奇怪的解决方案是使用 rmdir,如果目录为空,它将删除目录并返回,否则不执行任何操作并返回 .truefalse
0赞 Jimmy Found 7/21/2023
我尝试了您的功能,它工作得很好。尝试转储或查看您的目录是否真的存在。它可能会将根目录带到您想象的其他地方。is_diris_readable
0赞 Your Common Sense 7/21/2023
您是否检查过隐藏文件

答:

1赞 Markus Zeller 7/21/2023 #1

做一个扫描目录并计算内容。空目录始终包含 和 。因此,如果计数大于 2,则它不是空的。...

function isDirectoryEmpty(string $dir): bool
{
    return is_dir($dir) && count(scandir($dir)) <= 2;
}