[英]PHP: Using scandir(), folders are treated as files
在Linux CentOS 5.5上使用PHP 5.3.3(穩定版)。
這是我的文件夾結構:
www/myFolder/
www/myFolder/testFolder/
www/myFolder/testFile.txt
使用scandir()對“myFolder”文件夾我得到以下結果:
.
..
testFolder
testFile.txt
我正在嘗試從結果中過濾掉文件夾,只返回文件:
$scan = scandir('myFolder');
foreach($scan as $file)
{
if (!is_dir($file))
{
echo $file.'\n';
}
}
預期結果是:
testFile.txt
但是我實際上看到了:
testFile.txt
testFolder
誰能告訴我這里出了什么問題?
您需要更改目錄或將其附加到測試中。 當文件不存在時, is_dir
返回false。
$scan = scandir('myFolder');
foreach($scan as $file)
{
if (!is_dir("myFolder/$file"))
{
echo $file.'\n';
}
}
那應該做對了
不是is_dir()將文件作為參數嗎?
$scan = scandir('myFolder');
foreach($scan as $file)
{
if (!is_dir($file))
{
echo $file.'\n';
}
}
已經在這里告訴你答案: http : //bugs.php.net/bug.php?id = 52771
如果您顯示錯誤,您會看到為什么這不起作用:
Warning: Wrong parameter count for is_dir() in testFile.php on line 16
現在嘗試將$ file傳遞給is_dir()
$scan = scandir('myFolder');
foreach($scan as $file)
{
if (!is_dir($file))
{
echo $file.'\n';
}
}
如果有人來這里是有興趣將輸出保存到數組,這是一個快速的方法(修改為更高效):
$dirPath = 'dashboard';
$dir = scandir($dirPath);
foreach($dir as $index => &$item)
{
if(is_dir($dirPath. '/' . $item))
{
unset($dir[$index]);
}
}
$dir = array_values($dir);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.