下面的代码非常重复,我可以避免重复userdata函数调用吗?
if($this->session->userdata('lang'))
$lang = $this->session->userdata('lang');
在PHP>=5.3中,您可以执行以下操作:
$lang = $this->session->userdata('lang') ?: '';
将结果存储在一个临时变量中:
if($temp = $this->session->userdata('lang'))
$lang = $temp;
根据源代码,如果找不到值,该方法将返回NULL,因此您的if语句(目前的状态)是不必要的。
您可以使用
$lang = $this->session->userdata('lang')?$this->session->userdata('lang'):"";
但正如@bwoebi所指出的,这并不能避免加倍调用函数。
你可以创建一个函数来为你做那些肮脏的工作。
function getValueOrDefault($value, $default = null){
return $value?$value:$default;
}
$lang = getValueOrDefault($this->session->userdata('lang'), "en");
或者对于您的情况,取决于$this->session->userdata()的错误返回是什么
$lang = $this->session->userdata('lang');
可以是等效的。