重用函数结果的简写 if 语句
Posted
技术标签:
【中文标题】重用函数结果的简写 if 语句【英文标题】:Reuse function result in shorthand if statement 【发布时间】:2015-10-12 23:17:59 【问题描述】:有没有办法在不声明变量来保存函数结果的情况下,使用在简写 if 语句中调用的函数的结果,例如:
!empty(getType($user)) ? <RESULT OF FUNCTION> : ''
而不是做:
!empty(getType($user)) ? getType($user) : ''
这有效地调用了该函数两次。
【问题讨论】:
getType
返回什么?它真的需要!empty
,这很像那里的普通布尔测试吗?否则就去getType() ?: ""
甚至。
@mario 见:php.net/manual/en/function.gettype.php :)
@Rizier123 我认为这只是一个例子。一个普通的 PHP gettype()
不会返回任何除了字符串/真实的结果。
@mario gotcha。是的,可能是。
@mario getType()
只是一个示例,但在我的代码中,该函数返回一个字符串。
【参考方案1】:
只需将函数的返回值分配给变量,例如
!empty($result = getType($user)) ? $result : ''
//^^^^^^^^^^ ^^^^^^^ See here
编辑:
由于gettype()
总是返回一个字符串,您可以执行以下操作,但是三元组没有意义,因为它总是返回一个字符串。
getType($user)?: ''
【讨论】:
【参考方案2】:很丑,但是
php > echo (empty($foo = 0)) ? $foo : 'false';
0
由于在 PHP 中赋值操作的结果是被赋值的值,你得到 $foo 定义,然后可以在以后将它用于true
子句。
【讨论】:
以上是关于重用函数结果的简写 if 语句的主要内容,如果未能解决你的问题,请参考以下文章
重用语句和结果集是不是会释放其先前使用的资源?还是我必须在重用之前明确关闭它们?