- ベストアンサー
phpの代入
$a1="あああ"; $a2="いいい"; ... for( $i=1; $i <= 10; $i++ ) { echo $a1; } の echo $a1;を $a+$iの値で、あああ、いいい、を順に出力したいのですが、 こういう書き方をすればいいですか? echo $a[$i] みたいな書き方はできませんか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Hey!Hello!! Your question is nice and good job. This problem is 解決した by Ans of No.1 code is it. ------------------- <?php $a1 = "aaaaa"; $a2 = "bbbb"; $a3 = "ccc"; for ($i = 1; $i < 10; $i++) { echo ${'a'.$i}; //No.1 } ?> -------------------- 実行結果 -------------------- aaaaabbbbccc -------------------- this code is sample. If You OK, please message. thank you.
その他の回答 (2)
直接の答えは既にあるので、私からはアドバイスを。 >> echo $a[$i] >> みたいな書き方はできませんか? 配列知らないのかなー・・・と思ったらご存じのようですね。 こういうときは可変変数に頼らずに、配列を使うのが最もコードが美しくなります。 $a = array("あああ", "いいい", "ううう"); 【方法1】 for ($i=0; $i<count($a); $i++) { echo $a[$i] . PHP_EOL; } 一番オーソドックスな方法。 【方法2】 for ($i=0, $max=count($a); $i<$max; $i++) { echo $a[$i] . PHP_EOL; } 方法1だとcount関数がループごとに無駄に実行されるので、最初の1回だけ実行してそれを覚えておくように改善したバージョン。パフォーマンスはこっちのほうがいい。 【方法3】 foreach ($a as $value) { echo $value; } そもそもforeachを使えばcount関数も使わなくていいし$i++のようにインクリメントも行わなくていい。これが一番パフォーマンスがいい。 【方法3で配列の中身を書き換えたい場合】 foreach ($a as &$value) { $value = "test"; } unset($value); 「&」を頭につけてリファレンス渡しで回すと、$aの要素自体を書き換えることが出来ます。 但しループを抜けた後もリファレンスがついていると厄介なことが起こるので、foreachを抜けたらすぐにunsetを実行。
お礼
効率的な使い方、代わりの使い方を教えてくださってありがとうございます。
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
${'a' . $i}とかじゃなかったかな。 http://masha.maakikaku.jp/2008/03/php.php ただ、いくらPHPがそういう融通が利くからといっても、利用方法に問題があるから、そういった機能に頼らざるをえなくなるのです。 そうならない書き方を改めて再考してみてはいかがでしょうか?
お礼
素早い回答ありがとうございます!
お礼
Thank You! Very Much!