重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

HTML文ですが、これをPHPでループで回して無駄なコーディングを直したい。
どうしたらいいですか?
<select name="nhour">
<option value="0" <?php if($nhour == '0') echo"selected"; ?>>0</option>
<option value="1" <?php if($nhour == '1') echo"selected"; ?>>1</option>
<option value="2" <?php if($nhour == '2') echo"selected"; ?>>2</option>
<option value="3" <?php if($nhour == '3') echo"selected"; ?>>3</option>
<option value="4" <?php if($nhour == '4') echo"selected"; ?>>4</option>
<option value="5" <?php if($nhour == '5') echo"selected"; ?>>5</option>

</select>

A 回答 (2件)

$nhourは予め宣言されているのですよね?


$nhourを宣言後、以下のコードで動作します。

<select name="nhour">
<?php
for($i = 0; $i <= 5; $i++){
// $nhour が $i と等しいなら selected を宣言 等しくなければ空文字
$isSelected = $nhour == $i ? 'selected' : '';

echo "<option value=\"$i\" $isSelected>$i</option>" . "\n";
}
?>
</select>
    • good
    • 1

<?PHP


$nhour=filter_input(INPUT_GET,"nhour",FILTER_VALIDATE_INT);
foreach(range(0,5) as $key) $selected["nhour"][$key]="";
$selected["nhour"][$nhour]=" selected";
print_r($selected);
?>
<form method="get">
<select name="nhour">
<option value="0" <?=$selected["nhour"][0]?>>0</option>
<option value="1" <?=$selected["nhour"][1]?>>1</option>
<option value="2" <?=$selected["nhour"][2]?>>2</option>
<option value="3" <?=$selected["nhour"][3]?>>3</option>
<option value="4" <?=$selected["nhour"][4]?>>4</option>
<option value="5" <?=$selected["nhour"][5]?>>5</option>
</select>
<input type="submit" value="send">
</form>
    • good
    • 0
この回答へのお礼

ありがとうございます^_^

お礼日時:2022/01/19 16:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!