• ベストアンサー

複数のファイル名を取得したいのですが…

ディレクトリ内のファイル名を1件づつ取得し、表示したいのですが、readdirを使用し、ファイル名を取得すると、一つの変数に存在するファイル名をまとめて表示してしまいます。 ファイルの件数分、変数へファイル名を入れることは可能でしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

>一つの変数に存在するファイル名をまとめて表示してしまいます。 それは、そういうコードを書いているからではないですか。 readdir は1回にひとつのファイル名を返すと思いますが。  $handle = opendir('tmp');  while (false !== ($f = readdir($handle))) {   $files[] = $f;  }  print_r($files);

yukapu5656
質問者

補足

回答ありがとうございます。 $dir="xxx"; if (is_dir($dir)) { if ($handle = opendir($dir)) { while (false !== ($file = readdir($handle))) { while ($file = readdir($handle)) { echo $file; } } closedir($handle); } この書き方では$fileにいくつものファイル名を書き込んでしまうんですよね(--; $file、$file2、$file3と、ディレクトリ内のファイル件数分、変数を作成する方法があればよいのですが…。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

>while (false !== ($file = readdir($handle))) { >while ($file = readdir($handle)) { では、二回読むことになり、 1回目の$fileが上書きされてしまいます。 あと、#1さんが言うように、配列を使いましょう。

yukapu5656
質問者

お礼

[]の意味を理解していませんでした(^^; ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ファイル名を取得できない

    次のようなソースでディレクトリ内のファイル名を取得しようとしています。 $dh=opendir("."); while(($entry=readdir($dh))){ if(is_file($entry)){ print $entry."<>"; } } closedir($dh); このソースを、取得したいディレクトリ内で動かすとまったく問題ないのですが、ディレクトリのパスを1個上の階層などから相対パスで指定すると、.phpファイルと.htmlファイルは取得するのですが、ほかのファイル名は取得されなくなってしまいます。 何かphp.iniなどで設定があるのでしょうか。 回避方法がありましたら是非ご教授ください。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • ディレクトリ名を取得したい

    perlでディレクトリ名だけを取得したいのですが、 なかなかうまい方法が見つかりません。 ファイル名を取得する・・・というのは結構あるのですが、 ディレクトリ名だけ、というのがどうもわかりません。 ちなみにファイル名取得は以下のようにやっています。 my $md; opendir(DIR, 'q'); while (defined($dir = readdir(DIR))) { $md=substr($dir,0,6); } closedir(DIR); ディレクトリ名だけを取得・・・というのはどうやればよいのでしょうか。

    • ベストアンサー
    • Perl
  • 更新日時でソートしてファイル一覧を取得したい

    特定のディレクトリのファイル一覧を取得したいのですが、必要なのは最終更新日時でソートし、最新の30件のファイル名です。(ディレクトリのファイル件数は30件以上とは限りません) exec()を使った外部コマンドでは最新の1件のファイル名は取得できたのですが、30件となると方法がわかりません。 今考え付くのは、 dir()コマンドで取得したファイル名から最終更新日時を取得し、ソートして30件取り出す という方法です。 他にもっとスマートな方法で最新30件のファイル名を取得する方法はないでしょうか? よろしくお願いします。

    • 締切済み
    • PHP
  • ファイル名に『?』が入ってるファイルを開くには?

    ファイル名に半角の『?』が入ってるファイルには アクセスできないでしょうか? opendir(DIR, "./dir"); @list = grep(!/^\./, readdir(DIR)); close(DIR); ディレクトリにあるファイルのリストを取得して、 そのリストに基づいて処理をしたいのですが… ファイル名に『?』が入ってるファイルは、 open(); rename(); ファイル演算子等の処理できません。 これをなんとかする方法はあるのでしょうか?

    • ベストアンサー
    • Perl
  • delphi5でのディレクトリ内ファイル名の取得

    こんにちは。質問があります。 delphiのアプリケーションであるディレクトリのフォルダ内のファイルを 別のディレクトリのフォルダ内に名前を変えてコピーしようと考えています。 基本的にコピー元のディレクトリ名はわかりません。 コピー先のディレクトリは存在しなければ、名前を指定して作成し、その中に名前を変更したファイルを格納する流れです (わかりづらいかも・・・) フォルダが存在しなければ作成したり、ファイル名を変更してコピーする のはわかったのですが、コピー元のディレクトリ内のファイル(もしくはディレクトリ)名を取得することがわかりません。 全てソースの中でプログラムしたいと考えています。(VCLは使用しない) こんなんでもわかっちゃったりする方がいらっしゃいましたら、 どうか愛の手を・・・

  • フォルダ内のファイル名を取得して配列にぶち込みたいです

    こんにちは。 フォルダ内ファイル名を一覧にして表示させることまでは出来ますが、 この一覧表示されたファイル名を配列に入れるにはどうしたらよいでしょうか。 <?php $dir = "sample/"; // ディレクトリの内容を読み込みます。 if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { echo "filename: " . $file . "<br />\n"; } closedir($dh); } ?> ご教示宜しくお願い致します。

    • ベストアンサー
    • PHP
  • ファイルとディレクトリの見分け方は?

    環境  WindowsXP、Apache2.0.47、PHP4.3.2で使用しています。 質問  関数readdir($dh)で指定されたパスのファイルとディレクトリのリストを取得しています。  両方が存在していた場合、ファイルとディレクトリを見分けるためにはどのようにしたら良いのでしょうか?  都合の良い関数は無いように思ったのですが... よろしくお願いします。

    • ベストアンサー
    • PHP
  • ファイル名の取得

    CreateFileの第一引数の pszFileName というのは、createfileで開いたファイル名ですよね? それをcharの配列にコピーして表示させようとしているのですが、 うまく表示されません。 (うまく表示されるときとされないときがあります。 wordを立ち上げた時のdatファイルなどは表示される) 日本語が入っていると表示されないのかと思いましたがそうでもないようです…。 開いたファイル名を取得するAPIがあるのかと思い、探してみましたが 見つかりません…。 getFileSize APIを使用することで、ファイルサイズを取得出来るのはわかったのですが、ファイル名を取得するにはどのAPIを使用すればよいのかが調べてもわかりません。 どなたかご存知のお方いられましたら、ご教授願います。 よろしくおねがいします。

  • VBAで自身のファイル名を取得する方法

    Excelファイル自身が存在するディレクトリはCurDirで取得できました。しかし、Excelファイル自身のファイル名がある場所がわかりません。どうしたらよいでしょうか。

  • 指定文字を含むファイル名の取得

    こんばんは、質問させてください。 今あるディレクトリのファイルを取得しようと考えています。ですが、取得したいファイルはファイル名末尾が"tmp"となったものだけを取得したいと考えています。 $dir = "/home/httpd/test/"; while($fnm[] = readdir($dir)); closedir($dir); sort($fnm); reset($fnm); while($a = each($fnm)){ if(($a[1] != ".") and ($a[1] != "..") and ($a[1] != "")){ $file_data[] = $a[1]; } } ってとこまでしかわからず、欲しくないファイル名まで$file_dataに入ってしまいます。 aaaaa_1111.txt(取得したくない) aaaaa_1111.txt.tmp(取得したい) aaaaa_1111.tmp.txt(取得したくない) 末尾が"tmp"のみ欲しいです。 すみませんが、宜しくお願い致します。

    • ベストアンサー
    • PHP