PHP类有一个运算符(我认为5.3),它会将你的例子压缩为:
$myFruit = $_REQUEST['myfruit'] ?: "apple";
但是,我说“有点”,因为它只测试第一个操作数是否为false,如果未设置则不会抑制通知.因此,如果(如您的示例中)可能未设置,则原始代码最佳.
类似于dictionary.get的功能很简单:
function dget($dict, $key, $default) {
return isset($dict[$key]) ? $dict[$key] : $default;
}
为清楚起见,我仍然使用您的原始代码.
编辑:ifsetor()在http://wiki.php.net/rfc/ifsetor的userland实现#2比上面的函数更整洁,并且也适用于非数组,但是有一个警告,即使它没有被使用,也会始终评估默认表达式:
function ifsetor(&$variable, $default = null) {
if (isset($variable)) {
$tmp = $variable;
} else {
$tmp = $default;
}
return $tmp;
}