我试图在三元运算符中使用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 );
希望能有所帮助。
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-。