在三元运算符中使用return

时间:2011-06-07 13:58:28

标签: php conditional-operator

我正在尝试在三元运算符中使用return,但收到错误:

Parse error: syntax error, unexpected T_RETURN 

以下是代码:

$e = $this->return_errors();
(!$e) ? '' : return array('false', $e);

这可能吗?

谢谢!

7 个答案:

答案 0 :(得分:22)

这是正确的语法:

return  !$e ? '' : array('false', $e);

答案 1 :(得分:9)

关闭。 你想要return condition?a:b

答案 2 :(得分:6)

它在大多数语言中都不起作用,因为return是一个语句(如ifwhile等),而不是可以嵌套在表达式中的运算符。遵循相同的逻辑,您不会尝试在表达式中嵌套if语句:

// invalid because 'if' is a statement, cannot be nested, and yields no result
func(if ($a) $b; else $c;); 

// valid because ?: is an operator that yields a result
func($a ? $b : $c); 

它也不适用于breakcontinue

答案 3 :(得分:2)

不,这是不可能的,与以下相比,它也相当混乱:

if($e) {
    return array('false', $e);
}

答案 4 :(得分:1)

没有。但是你可以对return语句有一个三元表达式。

return (!$e) ? '' : array('false', $e);

注意:这可能不是理想的逻辑。我提供它作为一个例子。

答案 5 :(得分:0)

不,那是不可能的。但是,以下内容是可能的:

$e = $this->return_errors();
return ( !$e ) ? '' : array( false, $e );

希望有所帮助。

答案 6 :(得分:0)

Plop,

如果要使用三元数修改收益?

完全有可能。

在这个例子中,我有一个带有数组参数的函数。 该示例函数用于解析用户数组。 返回时,我有一个带有用户ID和用户名的数组。 但是,如果我没有任何用户怎么办?

<?php

public funtion parseUserTable(array $users) {
   $results = [];
   foreach ($users as $user) {
      $results[$users['id']] = $user['username'];
   }
  return $results ?: array('false', $e, "No users on table."); // Ternary operator.
}

对不起,我的英语不好,我是法国用户哈哈。

N-D。