在语句中使用简写重用函数结果

时间:2015-07-22 21:08:46

标签: php function ternary-operator

有没有办法在不声明变量来保存函数的结果的情况下,使用简写if语句中调用的函数的结果,如:

!empty(getType($user)) ? <RESULT OF FUNCTION> : ''

而不是:

!empty(getType($user)) ? getType($user) : ''

有效地调用该函数两次。

2 个答案:

答案 0 :(得分:3)

只需将函数的返回值赋给变量,例如

!empty($result = getType($user)) ? $result : ''
     //^^^^^^^^^^                  ^^^^^^^ See here

修改

由于gettype()总是返回一个字符串,你可以执行以下操作,但是三元组没有意义,因为它总是返回一个字符串。

getType($user)?: ''

答案 1 :(得分:3)

很难看,但是

php > echo (empty($foo = 0)) ? $foo : 'false';
0

由于PHP中赋值操作的结果是赋值,因此定义了$ foo,然后可以在true子句中使用它。