memo.xight.org

日々のメモ

switch ,case文を読みやすくする

Summary

case文には関数が使用可能.
switch 文の引数が0の時にswitch文を抜けてしまうので,switch(true)を利用することで回避.

悪い例

$var = 0;

// switch 文が falseと評価されてしまう
switch($var) {
	case ($var == 0):
		echo "0!";
		break;
	default:
		break;
}


良い例

$var = 0;

// switch 文を強制的にtrueで評価
switch(true) {
	case ($var == 0):
		echo "0!";
		break;
	default:
		break;
}


Sample

$test = 'aaa';
switch (true) {
	case ($test > 10):
		echo "10!";
		break;
	case is_numeric($test):
		echo "digit!";
		break;
	case is_float($test):
		echo "float!";
		break;
	case is_aaa($test):
		echo "aaa!";
		break;
	default:
		break;
}

function is_aaa($str)
{
	return ($str == 'aaa');
}


Reference

zuzara.com - 2006-06-14 - PHPのswitchのcase文には関数が使える
http://blog.zuzara.com/2006/06/14/85/

via

phpspot開発日誌 - 2006-06-15 - あまり知られていないPHPの構文について
http://phpspot.org/blog/archives/2006/06/php_47.html