- ベストアンサー
連想配列の値を可変変数にして、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']){ } }
- みんなの回答 (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]){ } }
その他の回答 (1)
- agunuz
- ベストアンサー率65% (288/438)
>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
お礼
回答ありがとうございました。 >可変変数を誤解しているとしか思えません ・誤解に気がつきました ・ご指摘ありがとうございましたー
お礼
回答ありがとうございました。 大変参考になりましたー