dポイントプレゼントキャンペーン実施中!

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

A 回答 (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 を ${ } の中に書きます。)
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/06/08 16:47

以下の箇所を



$tmp = '$qty'.$i;

下記のように変えてください。

$tmp = ${qty.$i};
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/06/08 16:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!