• ベストアンサー

文字列(配列)を変数として使いたい

PHPいつまでたっても初心者の者ですm(__)m 以下のようなことをしたいのですが、方法がわかりません。 ------- $code01[1] = "000"; $code02[1] = "020"; $code03[1] = "030"; $code01[2] = "001"; $code02[2] = "021"; $code03[2] = "031"; for ($i=1; $i<=2; $i++) { while ($cnt <= 3) { $cnt = $cnt + 1; if (strlen($empcnt) == 1) { $cnt2 = "0".$cnt; } else { $cnt2 = $cnt; } $codes = "code".$cnt2."[".$i."]"; <--- こんな感じのことがしたいのですが echo $$codes; <--- これだとうまくいかない } } ------- 期待する結果 000 020 030 001 021 031 ------- 出力方法が知りたいです。 よろしくお願いしますm(__)m

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

こんな感じでやります。 <?PHP $code01[1] = "000"; $code02[1] = "020"; $code03[1] = "030"; $code01[2] = "001"; $code02[2] = "021"; $code03[2] = "031"; for ($i=1; $i<=2; $i++) { $cnt=1; while ($cnt <=3) { $cnt2 = ($cnt<=9?"0":"").$cnt; $codes = "{${"code".$cnt2}[$i]}"; if($codes!="") echo $codes; $cnt++; } } ?>

yubaginnan
質問者

お礼

教えてもらいたかったのはまさにこれです! 私の説明不足や抜けがある中意図を汲み取ってご回答頂けて感激です! >$codes = "{${"code".$cnt2}[$i]}"; このような記述は知らなかったので勉強になりました。 >$cnt2 = ($cnt<=9?"0":"").$cnt; 二桁にするのもこっちのほうがすっきりですね。 DBから取り出した項目名が01~20まであったもので、べたに記述して いたのですが、おかげですっきりしました。 ありがとうございましたm(__)m

その他の回答 (2)

  • ryouchi
  • ベストアンサー率41% (52/125)
回答No.3

質問の意図がよくわからなかったので、 全く外しているかもしれませんが・・・ -------------------- <?php // 配列 $code01 = array(); $code02 = array(); $code03 = array(); // 値をセット $code01[1] = "000"; $code02[1] = "020"; $code03[1] = "030"; $code01[2] = "001"; $code02[2] = "021"; $code03[2] = "031"; // 繰り返す for($j = 1 ; $j <= 2 ; $j++){ for($i = 1 ; $i <= 3 ; $i++){ // eval評価用の変数を無理矢理作る $x = '$code0'.$i."[".$j."]"; // evalする eval ("echo \"$x<br/>\";"); } } ?> -------------------- 参考 http://jp.php.net/manual/ja/function.eval.php ちなみに、全くお薦めのやり方ではありません・・・

参考URL:
http://jp.php.net/manual/ja/function.eval.php
yubaginnan
質問者

お礼

説明がわかりにくくすみませんでした。 evalも使ってみたのですがやり方が悪かったらしく うまくいきませんでした。 ryouchiさんのやり方だとうまくいきそうですね。 試してみます。

  • Tasuke22
  • ベストアンサー率33% (1799/5383)
回答No.1

for のところから for($i=1; $i<=2; $i++){   echo($code01[$i]."<br>");   echo($code02[$i]."<br>");   echo($code03[$i]."<br>"); } 以上です。 コーディングで気になる点が幾つかあります。 ・配列を0から使わない(どうでもいいと言えば、いいのですが) ・$cntを初期化していないのに計算している ・$i++ や $cnt=$cnt+1 のようにコーディングスタイルがごっちゃ ・変数名を動的に生成しようとしている。PHPって出来たかな?  出来る言語はありますが、PHPで必然性を感じたことが無いですが。

関連するQ&A