はぁい紳士淑女&そうじゃない諸君げんきか〜い?
今日は素敵ですばらしいPHPの仕様を、もっと深く掘り下げてお届けする「シリーズ 2a問題を考える」のお時間だよw
$a = 0; switch ( $a ){ case NULL: case false: echo 'orz'; break; case 0: echo '(・ω・)'; break; }
このソースがもちろん「orz」になる理由はわかるよね?
間違っても「(・ω・)」ぢゃないよ?
でもこれを
$a = 0; switch ( $a ){ case 0: echo '(・ω・)'; break; case NULL: case false: echo 'orz'; break; }
ってやると、もちろん「(・ω・)」になるんだ。
そうそうちなみに。
$a = 1; switch ( $a ){ case true: echo 'orz orz'; break; case 0: echo '(・ω・)'; break; case NULL: case false: echo 'orz'; break; }
は当然「orz orz」になるのはわかるよね?
もちろん2a問題の一環なのだから。
$a = "2a"; switch ( $a ){ case 2: echo 'orz orz orz'; break; case 0: echo '(・ω・)'; break; case NULL: case false: echo 'orz'; break; }
でどこ通るかなんてぇのは自明の理だよね?
もちろん「case 2」だw
つまり、あれだ。
0はfalseでNULLで、それ以外のすべての値はtrueで。
"2a"は2になって、以下略。
すばらしい言語じゃないか。
何がどんな方向からどんな風にすばらしいのかは…言わせるな。政治的にまずいんだw
…知らずに使うと怖い言語だとは思うけど…まぁ…なんていうか…頭いてぇ…
追記:
2a問題は「 素晴らしき自動的な世界〜或いは「型のない」世界〜 ( http://d.hatena.ne.jp/gallu/20061108/p1 ) 」をご覧くださいませませ。