下面的代码有点重复,我可以避免重复 userdata 函数调用吗?
if($this->session->userdata('lang'))
$lang = $this->session->userdata('lang');
下面的代码有点重复,我可以避免重复 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;
根据source,如果找不到该值,该方法将返回 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');
可能是等价的。