- 締切済み
phpでのセレクトボックスの値を配列で指定
セレクトボックスの値をループで繰り返してvalueを設定しているのですがvalueの数が多くなればかなり見づらく 修正もしにくいのでvalue値を配列などで指定したいと思っています。 その場合、どのようにしてvalue値に配列を設定すればよろしいのでしょうか。 また配列でvalueを設定した場合[selected]などで初期値を設定する方法も分からなかったので 何かわかりやすくかつ少ない行数で胥吏できる方法があればご教授お願いします。 <?php for ($data = 1; $data < 5; $data++) { ?> <tr><td> <select name="test<?php echo $data?>"> <option value=1>1 <option value=2>2 <option value=3>3 <option value=4>4 <option value=5>5 <option value=6>6 <option value=7>7 <option value=8>8 <option value=9>9 <option value=10>10 </select> <?php } ?> ※option valueが20とか30とかになるとかなり見づらい処理かなと思います。 配列を変えるだけでいいようにしたいです。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
#2です デフォ値を指定したいならこんな風にしていもいいかもしれません <table> <?php $defaultvalue=array(1=>1,2=>3,3=>7,4=>10); for ($i= 1; $i < 5; $i++){ print "<tr><td>\n"; print "<select name=\"test{$i}\">\n"; for ($j = 1; $j <= 10; $j++){ $selected=($defaultvalue[$i]===$j)?" selected":""; print "<option value=\"{$j}\"{$selected}>{$j}</option>\n"; } print "</select>\n"; print "</td></tr>\n"; } ?> </table>
- yambejp
- ベストアンサー率51% (3827/7415)
valueが1から連続する整数であればこんな感じでやってもよいかと <table> <?php for ($data = 1; $data < 5; $data++){ ?> <tr><td> <select name="test<?php echo $data;?>"> <?php for ($i = 1; $i <= 10; $i++){ print "<option value=\"{$i}\">{$i}</option>\n"; } ?> </select> </td></tr> <?php } ?> </table> ただいちいちphpタグに入ったり出たりするくらいなら、一連の流れを 全部一括でやった方がむしろ見やすいと思いますが・・・ <table> <?php for ($i= 1; $i < 5; $i++){ print "<tr><td>\n"; print "<select name=\"test{$i}\">\n"; for ($j = 1; $j <= 10; $j++){ print "<option value=\"{$j}\">{$j}</option>\n"; } print "</select>\n"; print "</td></tr>\n"; } ?> </table> なお、デフォルト値の指定など設定したいとかになると少し工夫が必要です
お礼
回答ありがとうございます
補足
回答ありがとうございます。 <?php $select = SelectBox("0","1","2","3","4","5","6","7","8","9","10"); $SelectBox = "<select name=\"selectBoxName\">\n"; for ( $i = 0; $i < count( $SelectBox ); $i++ ) { $SelectBox .= "\t<option value=\"{$SelectBox[$i]}\">{$SelectBox[$i]}</option>\n"; } $SelectBox .= "</select>\n"; echo "{$SelectBox}"; ?> こんな風に実装していたのですがselectedでの初期値の設定がphpで作成した時よくわからなかったので htmlでベタ書きして作成してました。 <option value="0" <?php if($select[$i] == "0") { echo "selected"; } ?>> 0</option> これだと初期値も取れるのですがvalue値が多いと行も多くなってしまうので valueのところだけ配列で指定などはできるのでしょうか。 よろしくお願いします。
- agunuz
- ベストアンサー率65% (288/438)
開始と終了が決まっているなら、 <?php for ($i=1; $i <= 20; $i++) { printf('<option value="%d">%d</option>' . PHP_EOL, $i, $i); } ?> の方が配列にするよりもいいんじゃないですかね(配列で要素を20も30も書くのも無駄)。
お礼
回答ありがとうございます
補足
回答ありがとうございます 調べましたがいまいちつかめなかったのですが このソースは何をしているのでしょうか。 ちょっと理解が足らずすみません
お礼
回答ありがとうございます。 初期値の配列が文字の場合や画面初期表示の初期値はAパターン 未入力時はBパターン 比較結果ではCパターンなど初期値がごちゃごちゃになっていました。 ループでの表示と比較の初期値が設定できたので他のパターンの初期値を想定してみます。 ありがとうございます。