- ベストアンサー
わかりません・・・
<select name="hour"> <option value="" selected>-- <?php for($i=0;$i<24;$i++){ if(strlen($i) == 1){ if($hour == $i){ ?> <option value="'0'.<?=$i?>" selected>0<?=$i?> <?php }else{ ?> <option value="'0'.<?=$i?>">0<?=$i?> <?php } }else{ if($hour == $i){ ?> <option value="<?=$i?>" selected><?=$i?> <?php }else{ ?> <option value="<?=$i?>"><?=$i?> <?php } } } ?> </select>時 ------------------------------------------------------- 上記のようなスクリプトを作成しました。 リストボックスの時間について、 一桁なら0を付加(1→01)しています。 今、変数$hourに(00~23)までの値が入っていれば、 リストボックスには、$hourの値を等しいものを表示、 $hourに値が入っていなければ、デフォルト表示の”--”を 表示したいと考えています。 上記のスクリプトを動かしてみると、 $hourに値があるときは正常に動作します(リストボックスの値を $hourの値と等しいものを表示)が、 $hourに値がないときになぜか”00”を表示してしまいます。 本当は”--”を表示したいのですが・・・ なにかおかしいですか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
if($hour == $i){ ?> <option value="'0'.<?=$i?>" selected>0<?=$i?> <?php } この部分でしょう。 文字列が一桁で、さらに$hourが0の時は00をselectedとなっています。 ですので、 ここのif文を if(($i)&&($hour == $i)) とするとか。 if(($i>0)&&$hour == $i)) の方が良いのかな。
その他の回答 (2)
- mirurin
- ベストアンサー率43% (48/111)
if($hour == $i){ これは数値として比較してますよね? 変数$hourに値がない場合、数値に変換されて「0」となっているんじゃないでしょうか。
お礼
いつも返信ありがとうございます。 数値比較してますね・・・ >変数$hourに値がない場合、数値に変換されて「0」となっているんじゃないでし>ょうか。 どうもそのようですね。 アドバイス&回答ありがとうございました。
- the845t
- ベストアンサー率33% (246/743)
#1です。 下側の方、はじまりのカッコ一つ忘れてました。 if(($i>0)&&($hour == $i))
お礼
返信ありがとうございました。 できました。 $hourの値がない場合、0と判断されてしまうのですか・・・・ $hourの値がないとき念のため、表示させたのですが、 なにも表示されなかったので、 問題ないと思いこんでしまいました。 ありがとうございました。