初歩的な質問ですみません。
以下のような変数はどんな構造になっているのでしょうか?
配列の中にハッシュが入っているのかと思っているのですが・・
$list = [
{ id => '1', name => 'hoge' },
{ id => '2', name => 'fuga' },
{ id => '3', name => 'foo' }
];
上記の$listにあるidを全て出力しようとして以下のようにしても
出力することができません。
foreach ($list) {
print $_['id'];
print '<br>';
}
また「[]、{}」は何を意味するのでしょうか?
当方、PHPには詳しいのですがPerlは最近始めたばかりでよく理解できておりません。
お手数ですが、どなたかお分かりになる方いましたらご教授いただければと思います。
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とは似ているようで結構違います。半端にやらずに、区別して覚えるようにしましょう。
大変分かりやすい回答をいただきありがとうございました。
> Perlは不慣れ、とのことですが、PHPとは似ているようで結構違います。
そうですね、結構違うなっていうのを実感しております。
しっかり勉強しようと思います。
また機会がございましたらよろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで集計したい。
-
cgi アクセス制限 エラー
-
フォームを再送信しますか?
-
古ーくからフリーのtree.cgi掲...
-
-T(汚染モード)でメールが送れ...
-
docomoの構成プロファイルはど...
-
質問ページ(CGI)に行く時にフ...
-
めちゃきれい
-
number 改行が追加できない
-
生成AI画像について
-
3DCG
-
ホームページにメールフォーム...
-
CGIの記述について教えてくださ...
-
CGIの設置が分かりません・・・
-
ホームページにCGIを設置したの...
-
ホームページにCGIを設置したの...
-
サーバーのエラーでおしえてく...
-
ホームページの事でおしえてく...
-
さくらサーバーにcgiフォームを...
-
ホームページでCGIのフォームを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
GETメソッドとPOSTメソ...
-
POSTメソッドの最大容量について
-
postで送られてきたパラメータ...
-
CGIの変数に配列を代入する方法
-
VBAでプロシージャ間のデータを...
-
perl キーの集計について for...
-
ポインター引数の関数でコンパ...
-
10Mバイトて文字数に すると何...
-
UTF-8で5~6バイトになる文字コ...
-
エクセルシート名の制限を変更...
-
DataGridViewの特定列に入力さ...
-
stable diffusionのエラー
-
Excel VBA メール作成について ...
-
Excel 1セル当りの文字数が2...
-
char str[256]の256の意味は?
-
COBOLのCOMP形式について
-
バイト列とバイナリ列の違いが...
-
ビットスワップとバイトスワッ...
-
Rstudioによるテキストマイニン...
-
VBAでShift-JISのURLエンコード
おすすめ情報