is_dir()根据php手册返回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
AND:
Current array element is: .. and is_dir() on this element returns -->
boolean true
我错过了一些非常愚蠢的东西,但是谢谢。似乎is_dir()只为当前文件夹“。”正确返回TRUE。和父文件夹“..”
如果在使用is_dir()时我缺少细微差别,我就没有看到它。
帮助表示赞赏 - 我在代码中要做的就是在TEST_SUBFOLDERS_FILES_PATH下列出当前子文件夹,如果我能让is_dir()返回TRUE不仅仅是为了“。”和“..”以及其他'testFolderN'子文件夹。
顺便说一下 - 目录中总共有5个子文件夹和一个文件,因此上面显示的计数是:
The number of folders/files found is: 8
答案 0 :(得分:1)
您扫描$rootOfmainSubdir
,但在当前目录中测试is_dir()
。您可以在检查前添加根目录和目录分隔符,也可以在其中chdir()
。请注意,您当前的目录还包含.
和..
条目。
答案 1 :(得分:1)
您必须在$rootOfmainSubdir
的{{1}}电话中添加is_dir
,这样:
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(rootOfmainSubdir.$theArrayOfDirsAndFilesInmainSubdir[$i]) );
答案 2 :(得分:1)
您只需拨打glob
$dirs = glob("C:/xampp/htdocs/theProj/mainSubdir/*", GLOB_ONLYDIR);
答案 3 :(得分:-1)
manual表示您提供的文件名is_dir()
是
文件的路径。如果filename是相对文件名,则将相对检查 到当前的工作目录。
因此,您需要在每个目录前放置“./”,以便is_dir在当前目录中搜索它。否则,它看起来在“/”下,可能不是你想要的。