2013-07-27 31 views
0

我有下面的代碼使用PHPDirectoryIterator仍然顯示3個文件時forder是空

$x=0; 
$filepath=$uplaod_drive."Workspace/12345"; 
$dir = new DirectoryIterator($filepath); 
foreach($dir as $file){ 
    $x++; 
} 

但即使文件夾爲空,表明3個文件來算一個文件夾中的文件的數量在那裏,如果文件夾有8個文件,它顯示11個文件。

如果有人能解釋這個,我會非常感謝..謝謝。

+0

回顯每個'$ file'並查看它們是什麼。 –

+1

'if($ file-> isDot()||!$ file-> isFile())continue;' – Prix

回答

1

,如果你想只計算常規文件:

$x=0; 
$filepath=$uplaod_drive."Workspace/12345"; 
$dir = new DirectoryIterator($filepath); 
foreach($dir as $file){ 
    if ($file->isFile()) $x++; 
} 

,或者如果你想跳過目錄:

$x=0; 
$filepath=$uplaod_drive."Workspace/12345"; 
$dir = new DirectoryIterator($filepath); 
foreach($dir as $file){ 
    if (!$file->isDir()) $x++; 
} 

,或者如果你想跳過點文件:

$x=0; 
$filepath=$uplaod_drive."Workspace/12345"; 
$dir = new DirectoryIterator($filepath); 
foreach($dir as $file){ 
    if (!$file->isDot()) $x++; 
} 
+0

感謝ilalopoulos .... – user2288650

0

DirectoryIterator將當前目錄(用'。'表示)和前一個目錄(用'..'表示)計數爲$ files。像這樣調試你的代碼。

然後在上面的評論通過@Prix提到你可以跳過,如果$文件 - > isDot(),如果你不想算上目錄,那麼也跳過如果沒有$文件 - > ISFILE() 。

$x=0; 
$filepath='C:\xampp\htdocs\\'; 
$dir = new DirectoryIterator($filepath); 
foreach($dir as $file){ 
    if ($file->isDot() || !$file->isFile()) continue; 
    //echo $file . "<br/>"; 
    $x++; 
} 
echo $x; 
+0

謝謝Shafee。這有助於 – user2288650