• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:変数の構造について)

変数の構造についての質問

このQ&Aのポイント
  • 変数の構造についての初歩的な質問です。配列の中にハッシュが入っているのかどうかを知りたいです。
  • $list変数は、配列の中にハッシュが入っている構造です。idとnameの情報がハッシュ形式で格納されています。
  • PHPに詳しいがPerlを理解できていない質問者です。[]や{}がどのような意味を持つのか知りたいです。

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.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とは似ているようで結構違います。半端にやらずに、区別して覚えるようにしましょう。

mookun2007
質問者

お礼

大変分かりやすい回答をいただきありがとうございました。 > Perlは不慣れ、とのことですが、PHPとは似ているようで結構違います。 そうですね、結構違うなっていうのを実感しております。 しっかり勉強しようと思います。 また機会がございましたらよろしくお願いいたします。

関連するQ&A

専門家に質問してみよう