【发布时间】:2011-09-10 02:45:11
【问题描述】:
我正在尝试在三元运算符中使用 return,但收到错误:
Parse error: syntax error, unexpected T_RETURN
代码如下:
$e = $this->return_errors();
(!$e) ? '' : return array('false', $e);
这可能吗?
谢谢!
【问题讨论】:
我正在尝试在三元运算符中使用 return,但收到错误:
Parse error: syntax error, unexpected T_RETURN
代码如下:
$e = $this->return_errors();
(!$e) ? '' : return array('false', $e);
这可能吗?
谢谢!
【问题讨论】:
这是正确的语法:
return !$e ? '' : array('false', $e);
【讨论】:
关闭。
你会想要return condition?a:b
【讨论】:
它不适用于大多数语言,因为return 是一个语句(如if、while 等),而不是可以嵌套在表达式中的运算符。按照相同的逻辑,您不会尝试在表达式中嵌套 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);
它也不适用于 break 和 continue。
【讨论】:
不,这是不可能的,与以下相比,这也很令人困惑:
if($e) {
return array('false', $e);
}
【讨论】:
没有。但是您可以为 return 语句使用三元表达式。
return (!$e) ? '' : array('false', $e);
注意:这可能不是我们想要的逻辑。我提供它作为一个例子。
【讨论】:
不,这是不可能的。但是,以下是可能的:
$e = $this->return_errors();
return ( !$e ) ? '' : array( false, $e );
希望对您有所帮助。
【讨论】:
扑通一声,
如果你想用三元修改你的回报?
完全有可能。
在这个例子中,我有一个带有参数数组的函数。 此示例函数用于解析用户数组。 返回时,我有一个包含用户 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.
【讨论】:
:? 运算符的文档来提供更好的答案。