- ベストアンサー
複数のフォルダに格納された画像枚数を読み込むPHP
いつもお世話になっています。 複数のフォルダの中に画像が入っていて、 その中に何枚入っているかの数字を カウントしたいと思っているのですが、 なかなかうまくいきません・・・。 フォルダーの指定を以下のようにしているのですが、 <?php $folder[0]='picture/1/'; $folder[1]='picture/2/'; $folder[2]='picture/3/'; $folder[3]='picture/4/'; $folder[4]='picture/5/'; $folder[5]='picture/6/'; $fname='画像名?'; ?> このときの$fnameの指定の仕方がわかりません。 thum.gif などとして、 全てのフォルダにthum.gifを入れればいいのでしょうか? それとも他に方法があるのでしょうか? 初心者な質問で申し訳ありません!! ご存知の方、宜しくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>> echoで出力してみると、「array」となってしまいます・・・(TдT) 提示したプログラムをそのまま使用して試しているのでは無く 何か変更しているか、他にプログラムを付け加えていますね。 >> $fnameで指定する画像は一定でないと読み込んでくれません(TдT) 私の想定していた使い方と違う使い方をしているようです。 クリックしたファイルの何枚中何枚目だけを表示したいと思ったので とりあえず下記コードで、$folder[]の値だけ変更して あとはコピペで実行してみてください。 ここで表示される情報の中にほしい情報はありますかか? <?php $folder[0]='picture/1/'; $folder[1]='picture/2/'; foreach($folder as $k=>$v){ $f[$v]=0; $d = dir($v); while (false !== ($entry = $d->read())) if (eregi('\.(jpg|jpeg|gif|png)$',$entry)) $f[$k][]=$entry; $d->close(); } foreach($folder as $k=>$v){ echo "\nフォルダー名:「".$v."」 画像数=".count($f[$k])."枚 <br>\n "; foreach($f[$k] as $no=>$j){ echo count($f[$k])."枚中".($no+1)."枚目 ファイル名=".$v.$j." <br>\n "; } } ?>
その他の回答 (3)
- katsuq
- ベストアンサー率0% (0/1)
echoで表示できるのは、文字列か、文字列に自動的に変換される値だけですので、配列やオブジェクトが変数に格納されている場合、思ったように表示されません。 変数の中身をのぞきたいので表示させるときは、print_rか、var_dumpを使うとよいでしょう。 print_r($a); var_dump($b); のように使います。 もし、動かなくてお困りなら、プログラム全体を見せてもらわないとなんとも言えません。そういうわけにもいかないのかもしれませんが、ほかの質問の続きであるのなら、そちらも示してもらわないとなんとも。
- mpx
- ベストアンサー率71% (149/209)
>> 複数のフォルダの中に画像が入っていて、 >> その中に何枚入っているかの数字を >> カウントしたいと思っているのですが、 フォルダ毎の画像数を知りたいだけなら下記参照 <?php $folder[0]='picture/1/'; $folder[1]='picture/2/'; -- 中略 --- $folder[5]='picture/6/'; //フォルダ毎の画像ファイル数計測 foreach($folder as $k=>$v){ $f[$v]=0; $d = dir($v); while (false !== ($entry = $d->read())) if (eregi('\.(jpg|jpeg|gif|png)$',$entry)) $f[$v]++; $d->close(); } //結果表示 フォルダ名:画像枚数 foreach($f as $v=>$c){ echo $v." : ".$c."枚\n"; } ?> >> このときの$fnameの指定の仕方がわかりません。 この$fnameは、以前の質問 http://okwave.jp/qa4987152.html の質問内に記載のされていた「フォルダxの画像がクリックされたときは」 のクリックされたファイル名を入れるだけです。 以前の質問から推測すると、 画面上にフォルダー毎の画像が表示されており、 その中の画像をクリックすると、そのリンク先に飛び 「5枚中1枚目」などと表示する。 画像の各リンクには、各画像を特定する画像ファイル名か画像のIDを含んでいる はずなので、POST(またはGET)された受け側ではその画像ファイル名が受けられるはずです。(IDの場合は、画像ファイル名に変換が必要) その画像のファイル名を$fname入れることを前提としています
補足
前回に引き続きご回答本当にありがとうございます! 頂いたPHPをいれてみたのですが、$vを echoで出力してみると、「array」となってしまいます・・・(TдT) ここから動けず、本当に困っています。 もし何かご存知の点があれば 教えて頂ければ幸いです。 宜しくお願いします!!!
- katsuq
- ベストアンサー率0% (0/1)
複数のフォルダにあるファイルを探すのには、phpの場合、globという関数を使うとよいと思います。 http://jp.php.net/manual/ja/function.glob.php をご覧ください。 たとえば、 <? print_r(glob("picture/*/*")); ?> を実行してみると感じがわかると思います。 これを <? print_r(glob("picture/*/*.gif")); ?> とやれば、suffixがgifのものだけを選べます。 数を調べたければ、 <? echo count(glob("picture/*/*.gif")); ?> なんてどうでしょう。 お役に立てば…
お礼
ご回答ありがとうございます! 私の実力が足りないのか、やはり $fnameで指定する画像は一定でないと 読み込んでくれません(TдT) もうちょっとがんばってみます!! ありがとうございました!
お礼
>提示したプログラムをそのまま使用して試しているのでは無く 何か変更しているか、他にプログラムを付け加えていますね。 その通りでした!JavaScriptが絡んでいたため、 正常に動かないのでした(*´Д`)=з PHPでの読み込みを1クリック目だけにして、あとのクリックはJavaScriptで読み込むことで解決しました!!! 長々と本当にお世話になりました。 本当にありがとうございます。