ブックマーク / futuremix.org (1)

  • PHP の switch で上手く判定できない罠

    PHP って型が曖昧だったりするので、久しぶりにやると嵌ります。今回のハマリは、switch の case で文字列で比較するケース。PHPswitch 文で文字列比較ができるので便利と言えば、便利ですが、引数の型に気をつけないと予期せぬ動作をします。単純化して書くと、 $var = 0; switch ( $var) { case 'X' : print "hoge"; break; //この行を通る。 case 'Y' : print "foo"; break; default : print "bar"; break; //ここは通らない。 } $var = "0"; のように $var が文字列型だと default 節に飛ぶのですが、$var = 0 のように数値型にして渡すと、数値に変換した hoge は 0 となるので、かならず1行目を通ってしまいます。 この例だけで言

    OfficialUser
    OfficialUser 2009/01/05
    キャストを使ってswitch文を意図通りに動作させる。
  • 1