dポイントプレゼントキャンペーン実施中!

Apache2.0.47、PHP4.3.2で使用しています。

フォルダ内のファイル名の取得を以下のように書いています。
(scandirは使えませんでした)
<?php
$dir = "test_dir";
$dh = opendir($dir);
while (false !== ($filename = readdir($dh))) {
$files[] = $filename;
}
sort($files);
print_r($files);
?>

"."と".."も取得されるので、以下のように変更したのですが同じ結果でした。
<?php
$dir = "test_dir";
$dh = opendir($dir);
while (false !== ($filename = readdir($dh))) {
if(filename!=". "){
if(filename!=".. "){
$file[] = $filename;
}
}
}
sort($files);
print_r($files);
?>

"."と".."をはぶいたファイル名だけを取得したい場合にはどうすればよいのでしょうか?
よろしくお願いします。

A 回答 (3件)

ちゃんと動作してファイル名を取得できているとして、


質問の回答としては以下のようにするとできます。
while (false !== ($filename = readdir($dh))) {
if(!is_dir($filename)){
$file[] = $filename;
}
}
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
お礼が遅くなりすいません。

$filename==".."ではなく、!is_dir($filename)を使えば良かったのですね。
"."や".."が!is_dirで対処できることも分かりました。


ありがとうございました。

お礼日時:2004/11/25 16:58

余計な空白が入っています。


". "、".. "
 ~   ~

あと修正すべきは、変数に$を付けるのと、変数名の間違いですね。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
お礼が遅くなりすいません。

printで表示すると空白も表示されるので必要なものと思っていました。
変数の$はうっかりしていました。
変数の間違いというのは何か分かりませんでした。
とりあえず動くようになりました。

ありがとうございました。

お礼日時:2004/11/25 16:52

このソース、エラーになりませんか?(^^;



正解を書くとスキルアップにならないと思いますのでヒントを

1)PHPの配列をもう少し勉強
2)変数名には先頭に$が必要(これはプロでも時たまやらかしますね)

などです。頑張りましょう
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
お礼が遅くなりすいません。

配列の確認をしました。知識不足でした。
変数名の$、うっかりしてました。
改めてソースを見直して不具合に気づいたのですが、不思議とエラーにはなってなかったです。
(こういうのが、かえって嫌な不具合です)

ありがとうございました。

お礼日時:2004/11/25 16:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!