5

Linux CentOS 5.5 で PHP 5.3.3 (安定版) を使用します。

私のフォルダ構造は次のとおりです。

www/myFolder/
www/myFolder/testFolder/
www/myFolder/testFile.txt

「myFolder」フォルダーに対して scandir() を使用すると、次の結果が得られます。

.
..
testFolder
testFile.txt

結果からフォルダーを除外し、ファイルのみを返そうとしています:

$scan = scandir('myFolder');

foreach($scan as $file)
{
    if (!is_dir($file))
    {
        echo $file.'\n';
    }
}

期待される結果は次のとおりです。

testFile.txt

しかし、私は実際に見ています:

testFile.txt
testFolder

ここで何が問題なのか誰か教えてください。

4

5 に答える 5

10

ディレクトリを変更するか、テストに追加する必要があります。is_dirファイルが存在しない場合は false を返します。

$scan = scandir('myFolder');

foreach($scan as $file)
{
    if (!is_dir("myFolder/$file"))
    {
        echo $file.'\n';
    }
}

それは正しいことをするはずです

于 2010-07-28T14:31:25.173 に答える
2

ここですでに答えを教えてくれました:http://bugs.php.net/bug.php?id=52471

于 2010-07-28T14:32:21.820 に答える
2

is_dir() はファイルをパラメーターとして取りませんか?

$scan = scandir('myFolder');

foreach($scan as $file)
{
    if (!is_dir($file))
    {
        echo $file.'\n';
    }
}
于 2010-07-28T14:29:42.753 に答える
1

エラーが表示されていた場合は、これが機能しない理由がわかります。

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'; 
    } 
} 
于 2010-07-28T14:30:55.363 に答える