如果var使用var,则缩短php



下面的代码非常重复,我可以避免重复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');

可以是等效的。

最新更新