<?php
$test = 'aaa';
switch ($test) {
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') ? true : false;
}
URLのパラメータが数字だったら、という処理をif文ではなくswitch文で書けたらきれいかな、と思ってやってみたら動きました。ユーザ定義関数を使うときはちゃんとboolを返さないと動かないようです。
マニュアルには見当たらない構文ですが使う機会はありそう。他のLLでも動くんでしょーか。

PHPのswitchのcase文には関数が使える
3 Comments
»
コメントはお気軽にどうぞ




うーん、これって、$test と関数が適用された結果(サンプルだと true || false )が == で比較されて、その結果が trueなら case文が成立したとみてるんじゃないでしょうか?
$test = 0; // boolean値に自動変換されるときは false
で試すと、最初の ($test > 10) => false とマッチしてしまいます。
switch(true){ case ($test > 10): …. }
とか書いたほうがよいかと。
Comment by nazoking — 2006年6月14日 @ 17:50
なるほど。
コメントありがとうございますー。switch(true)って面白いですね。
Comment by funaki — 2006年6月14日 @ 20:49
コードがすっきり!PHPのswitchのcase文には関数が使える…
zuzara.com � PHPのswitchのcase文には関数が使えるswi…
Trackback by Dragonfly — 2006年6月16日 @ 08:50