• ベストアンサー

連想配列の値を可変変数にして、for文で書きたい

if($hoge['test_1']){ } if($hoge['test_2']){ } if($hoge['test_3']){ } if($hoge['test_4']){ } if($hoge['test_5']){ } ・上記をfor文で一気に書きたいです ・どう書けば良いでしょうか? for ($i = 1; $i <= 5; $i++) {  if($hoge['test_$i']){  } }

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

  • ベストアンサー
  • wave117
  • ベストアンサー率100% (5/5)
回答No.2

シングルコーテーションの箇所をダブルコーテーションで書けばよいと思います。 for ($i = 1; $i <= 5; $i++) { if($hoge["test_$i"]){ } } ダブルコーテーションの内の変数は展開されるからです。 $i = 1; echo 'test_$i'; //=>test_$iが出力 echo "test_$i"; //=>test_1が出力 もしくは、文字列を結合したものもキーに使えます。 for ($i = 1; $i <= 5; $i++) { if($hoge['test_' . $i]){ } }

re97
質問者

お礼

回答ありがとうございました。 大変参考になりましたー

その他の回答 (1)

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.1

>if($hoge['test_$i']){ 単引用符で括ると、変数は展開されません。変数を展開(parse)したければ二重引用符で括ってください。 http://php.net/manual/ja/language.types.string.php#language.types.string.parsing if($hoge["test_$i"]){ もしくは、文字列を結合して if($hoge['test_' . $i]){ です。 質問のタイトルにある「可変変数」を使う局面ではありません(可変変数を誤解しているとしか思えません)。 http://php.net/manual/ja/language.variables.variable.php

re97
質問者

お礼

回答ありがとうございました。 >可変変数を誤解しているとしか思えません ・誤解に気がつきました ・ご指摘ありがとうございましたー

関連するQ&A