【问题标题】:Reuse function result in shorthand if statement重用函数结果的简写 if 语句
【发布时间】:2015-10-12 23:17:59
【问题描述】:

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

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

而不是做:

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

这有效地调用了该函数两次。

【问题讨论】:

  • getType 返回什么?它真的需要!empty,这很像那里的普通布尔测试吗?否则就去getType() ?: "" 甚至。
  • @Rizier123 我认为这只是一个例子。一个普通的 PHP gettype() 不会返回任何除了字符串/真实的结果。
  • @mario gotcha。是的,可能是。
  • @mario getType() 只是一个示例,但在我的代码中,该函数返回一个字符串。

标签: php function ternary-operator


【解决方案1】:

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

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

编辑:

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

getType($user)?: ''

【讨论】:

    【解决方案2】:

    很丑,但是

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

    由于在 PHP 中赋值操作的结果是被赋值的值,你得到 $foo 定义,然后可以在以后将它用于true 子句。

    【讨论】:

      猜你喜欢
      • 2013-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-18
      • 1970-01-01
      • 1970-01-01
      • 2012-04-09
      相关资源
      最近更新 更多