• ベストアンサー

文字列をスカラー変数として認識させるには?

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......」として、そのまま表示されてしまいます。 ご教示お願い致します。

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

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.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 を ${ } の中に書きます。)

poptron
質問者

お礼

ご丁寧な説明どうもありがとうございます。精進いたします!

その他の回答 (1)

  • wolfwood
  • ベストアンサー率50% (199/398)
回答No.1

以下の箇所を $tmp = '$qty'.$i; 下記のように変えてください。 $tmp = ${qty.$i};

poptron
質問者

お礼

ありがとうございます!出来ました!

関連するQ&A