根据 php 手册,如果传递引用文件夹的字符串,is_dir() 将返回 true。 它返回 false - 尽管传递了一组有效的文件夹名称 - 这可能很简单,但我因为没有找到它而自责。
这是代码:
define('TEST_SUBFOLDERS_FILES_PATH', 'C:/xampp/htdocs/theProj/mainSubdir/');
$currentFolder = ' ';
$rootOfmainSubdir = TEST_SUBFOLDERS_FILES_PATH';
$theArrayOfDirsAndFilesInmainSubdir;
// fill an array that contains all files and folders under the /mainSubdir folder
// using php's 'scandir()'
if( ($theArrayOfDirsAndFilesInmainSubdir = scandir($rootOfmainSubdir )) != FALSE )
{
$numArrayEntries = count($theArrayOfDirsAndFilesInmainSubdir);
echo "<br><br>The number of folders/files found is: " . $numArrayEntries;
// now do the triage on subfolders under /mainSubdir versus files
for($i = 0; $i < $numArrayEntries; $i++)
{
echo "<br><br>Current array element is: "
. $theArrayOfDirsAndFilesInmainSubdir[$i]
. " and is_dir() on this element returns --> "
. var_dump( is_dir($theArrayOfDirsAndFilesInmainSubdir[$i]) );
// rest of code
以下是我在几乎所有文件夹的输出中看到的内容:
Current array element is: testFolderN and is_dir() on this element returns -->
boolean false
或者我看到:
Current array element is: . and is_dir() on this element returns -->
boolean true
并且:
Current array element is: .. and is_dir() on this element returns -->
boolean true
我在这里错过了一些非常愚蠢的东西,但是天啊。看来 is_dir() 仅对当前文件夹“.”正确返回 TRUE。和父文件夹“..”
如果我在使用 is_dir() 时遗漏了细微差别,我就看不到它。
感谢帮助——如果我能让 is_dir() 不仅对“.”返回 TRUE,那么我在代码中要做的就是在 TEST_SUBFOLDERS_FILES_PATH 下列出当前子文件夹的列表。和“..”,还有其他“testFolderN”子文件夹。
顺便说一句——目录下一共有5个子文件夹,1个文件,所以上面的计数显示是:
The number of folders/files found is: 8
最佳答案
您扫描$rootOfmainSubdir
,但在当前目录中测试is_dir()
。您可以在检查之前添加根目录和目录分隔符,或者在其中添加 chdir() 。请注意,您当前的目录还有 .
和 ..
条目。
关于php - is_dir() 在传递子文件夹时返回 FALSE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8370237/