0

下面的代码有点重复,我可以避免重复 userdata 函数调用吗?

if($this->session->userdata('lang'))
        $lang = $this->session->userdata('lang');
4

4 回答 4

5

在 PHP >= 5.3 你可以这样做:

$lang = $this->session->userdata('lang') ?: '';
于 2013-07-02T20:44:31.687 回答
2

将结果存储在临时变量中:

if($temp = $this->session->userdata('lang'))
        $lang = $temp;
于 2013-07-02T20:42:56.660 回答
2

根据source,如果找不到该值,该方法将返回 NULL,因此您的 if 语句(目前的情况)是不必要的。

于 2013-07-02T20:58:15.950 回答
0

您可以使用

$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');

可能是等价的。

于 2013-07-02T20:42:33.870 回答