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