がるの健忘録

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

2a問題再びw

はぁい紳士淑女&そうじゃない諸君げんきか〜い?
今日は素敵ですばらしい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 ) 」をご覧くださいませませ。