人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

define('TEST_DIR', "/var/tmp/");
if (!($dir = opendir(TEST_DIR."/".$aaaa))) {
die;
}
$after_test_time = array();
while ($test_time = readdir($dir)) {
if ((strlen(trim($test_time)) == 6) && (!is_dir($test_time))) {
echo "$test_time\n";
$after_test_time[] = TEST_DIR."/".$aaaa."/".$test_time;
}
}
closedir($dir);
上記のようなプログラムがあります。
そして、$after_test_timeの配列にフォルダ名だけの
6桁の名前を入れたいです。
$aaaa配下のフォルダ構成なのですが、なぜか111111までechoします。
どうしたらいいのでしょうか?
drwxrwxrwx 2 test *** 4096 Sep 8 15:44 091915
drwxrwxrwx 2 test *** 4096 Sep 8 16:45 092616
drwxrwxrwx 2 test *** 4096 Sep 8 15:23 092715
drwxrwxrwx 2 test *** 4096 Sep 8 15:12 092815
drwxrwxrwx 2 test2 *** 4096 Sep 11 14:07 092924
-rw-r--r-- 1 test2 *** 0 Sep 11 18:00 111111

●質問者: hopefully
●カテゴリ:就職・転職 コンピュータ
✍キーワード:00 23 Dir echo test
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● birdie-brain
●60ポイント

サンプルプログラム7行目の

>is_dir($test_time)

の引数にディレクトリ指定なしのファイル名のみを渡しているので、検査対象が実行時のカレントディレクトリになってしまってます。

そのため、(たまたまカレントディレクトリに同じ名前のディレクトリが存在しない限り)大抵の場合はfalseを返すことになります。

結果として、これでは読み取り対象のディレクトリにある数字6桁のファイル名をすべて列挙してしまいます。

列挙したファイル名をis_dir()関数に渡すときに、ディレクトリのパスを連結してやればよいのではないでしょうか。

◎質問者からの返答

納得できました。

ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ