• ベストアンサー

わかりません・・・

<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”を表示してしまいます。 本当は”--”を表示したいのですが・・・ なにかおかしいですか?

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

  • ベストアンサー
  • the845t
  • ベストアンサー率33% (246/743)
回答No.1

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)) の方が良いのかな。

653
質問者

お礼

返信ありがとうございました。 できました。 $hourの値がない場合、0と判断されてしまうのですか・・・・ $hourの値がないとき念のため、表示させたのですが、 なにも表示されなかったので、 問題ないと思いこんでしまいました。 ありがとうございました。

その他の回答 (2)

  • mirurin
  • ベストアンサー率43% (48/111)
回答No.3

if($hour == $i){ これは数値として比較してますよね? 変数$hourに値がない場合、数値に変換されて「0」となっているんじゃないでしょうか。

653
質問者

お礼

いつも返信ありがとうございます。 数値比較してますね・・・ >変数$hourに値がない場合、数値に変換されて「0」となっているんじゃないでし>ょうか。 どうもそのようですね。 アドバイス&回答ありがとうございました。

  • the845t
  • ベストアンサー率33% (246/743)
回答No.2

#1です。 下側の方、はじまりのカッコ一つ忘れてました。 if(($i>0)&&($hour == $i))

関連するQ&A