- ベストアンサー
配列についての質問
- CGIの勉強中に遭遇した配列についての質問です。メッセージの表示部分で全員の内容を表示する方法を知りたいです。
- 配列についての質問です。現在CGIの勉強中で、ゲストブックを作成しているのですが、メッセージの表示がうまくいきません。全員の内容を表示する方法を教えてください。
- CGIの勉強中に、ゲストブックの作成で困っています。メッセージの表示部分で、全員の内容を表示する方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>順番に配列に番号を振って行くことって可能でしょうか? @log01,@log02,@log03のように配列を作っていくことは可能だと思いますが、その後の取扱が面倒になるので、配列の配列にすればいいと思います ------------------------------------------------------------------ open(D,"log.dat"); @data=<D>; close(D); $i=0; foreach (@data){ $log[$i++]=[split(/<>/)]; } $logSize=$i; for($i=0;$i<$logSize;$i++){ ($name,$mes)=@{$log[$i]}; print "$name : $mes\n"; } ------------------------------------------------ ($name,$mes)=@{$log[$i]}; は、元の書き方を活かしているのでこういう書き方をしていますが $name=$log[$i][0]; $mes=$log[$i][1]; の様に 名前=$log[0からの一連番号][0]; メッセージ=$log[0からの一連番号][1]; のようにアクセスできます。 特に順番にこだわらないのなら、配列にしないで、名前をキーとしたハッシュにするのも1つの方法だと思います。
その他の回答 (1)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
$data=<D>; だと一行しかデータを読み込んでません。 @data=<D>; とすると配列として全てのデータを読み込みます。 全員の分は、その配列の1つ1つについて処理をします。 --------------------------------------------------- open(D,"log.dat"); @data=<D>; close(D); foreach (@data){ @log=split(/<>/); ($name,$mes)=@log; print "$name : $mes\n"; }
補足
ありがとうございます。勉強になります。m(_ _)m あの、もうひとつ質問なんですけど、 順番に配列に番号を振って行くことって可能でしょうか? こんな感じで↓ @log01=("Aさん","GOOです。"); @log02=("Bさん","まあいいんじゃない?"); @log03=("Cさん","ファイトー"); よろしくお願いしますm(_ _)m
お礼
難しいですね・・・。 がんばって見ます。ありがとうございましたm(_ _)m