- ベストアンサー
変数の構造についての質問
- 変数の構造についての初歩的な質問です。配列の中にハッシュが入っているのかどうかを知りたいです。
- $list変数は、配列の中にハッシュが入っている構造です。idとnameの情報がハッシュ形式で格納されています。
- PHPに詳しいがPerlを理解できていない質問者です。[]や{}がどのような意味を持つのか知りたいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
無名配列、無名ハッシュ、リファレンス 以上をキーワードに調べてみてください。 $listはハッシュの配列(もっと正確に言えば、「『ハッシュへのリファレンス』を要素にもつリスト」へのリファレンスになります) > foreach ($list) { これでは、$listが示すリファレンス一つだけのforeachになります。 $_ == $list となります。 また、Perlでは、インデックスを指定する場合に使うのは、リストには[],ハッシュには{}です。 $_['id'] では、'id'は数値0だと判定され、$_[0]の意味になります。 合せれば、$_['id']は $list[0] にあたり、{ id => '1', name => 'hoge' }(へのリファレンス)になります。 printでは そのことを示す HASH(0xXXXXXX) というような表示になったのでは無いでしょうか。 リファレンスから元の値にするには、デリファレンスと呼ばれる処理が必要です。 foreach (@$list) { # 配列のリファレンスを@でデリファレンス→リストになり、 #リストの要素であるハッシュのリファレンスが順番に$_へ入る print $_->{'id'} ; # ハッシュのリファレンスの中の特定要素へは->を使ってアクセスする。 # ハッシュのインデックスは{}で指定する。 > また「[]、{}」は何を意味するのでしょうか? $list=[~ では、 []は無名配列、{}は無名ハッシュですが、どちらの記号も他の場面でも使われています。 その文脈で判断する必要があります。 Perlは不慣れ、とのことですが、PHPとは似ているようで結構違います。半端にやらずに、区別して覚えるようにしましょう。
お礼
大変分かりやすい回答をいただきありがとうございました。 > Perlは不慣れ、とのことですが、PHPとは似ているようで結構違います。 そうですね、結構違うなっていうのを実感しております。 しっかり勉強しようと思います。 また機会がございましたらよろしくお願いいたします。