- ベストアンサー
文字列をスカラー変数として認識させるには?
for文で合成して出来た文字列をスカラー変数として認識させたいのですが、 どうすればよいのでしょうか? ################################################# $qty1 = 'aaa'; $qty2 = 'bbb'; $qty3 = 'ccc'; $qty4 = 'ddd'; $qty5 = 'eee'; $qty6 = 'fff'; $qty7 = 'ggg'; $qty8 = 'hhh'; $qty9 = 'iii'; for ($i=1; $i<10; $i++){ $tmp = '$qty'.$i; print "$tmp\n"; } ################################################# 自分としては、「aaa、bbb、ccc.....」のように、代入された値の羅列としてプリントされて欲しいのですが、 実際は「$qty1、$qty2、$qty3......」として、そのまま表示されてしまいます。 ご教示お願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
「シンボリックリファレンス」という機能を使うと、変数の値を変数名として使用することができます。 $var = 10; $symbolic_reference = 'var'; print $$symbolic_reference; # 10 質問のプログラムだと、 for ($i=1; $i<10; $i++){ $tmp = 'qty'.$i; # '$qty' → 'qty' に変更 print "$$tmp\n"; # $tmp → $$tmp に変更 } でOK。 ちなみに $tmp を介さず、直接 print "${'qty'.$i}\n"; とすることもできます。 (変数名にあたる 'qty'.$i を ${ } の中に書きます。)
その他の回答 (1)
- wolfwood
- ベストアンサー率50% (199/398)
以下の箇所を $tmp = '$qty'.$i; 下記のように変えてください。 $tmp = ${qty.$i};
お礼
ありがとうございます!出来ました!
お礼
ご丁寧な説明どうもありがとうございます。精進いたします!