回报我试图使用三元操作符的回报,但收到一个错误:使用在三元运算符PHP
Parse error: syntax error, unexpected T_RETURN
下面的代码:
$e = $this->return_errors();
(!$e) ? '' : return array('false', $e);
这可能吗?
谢谢!
回报我试图使用三元操作符的回报,但收到一个错误:使用在三元运算符PHP
Parse error: syntax error, unexpected T_RETURN
下面的代码:
$e = $this->return_errors();
(!$e) ? '' : return array('false', $e);
这可能吗?
谢谢!
它在大多数语言中不起作用,因为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 !$e ? '' : array('false', $e);
不,那是不可能的。但是,以下是可能的:
$e = $this->return_errors();
return (!$e) ? '' : array(false, $e);
希望有所帮助。
关闭。 你想要return condition?a:b
+1作为新用户。不要忘记格式化你的代码:) – 2011-06-07 14:03:41
不,但你可以有一个return
陈述的三元表达式。
return (!$e) ? '' : array('false', $e);
注:这可能不是所期望的逻辑。我提供它作为一个例子。
我不认为这是OP的例子的预期结果。这将在两种情况下都会返回,而OP可能只是在其中一种情况下询问如何返回。 – 2011-06-07 14:03:29
没错,但它不会那样工作。因为它是一个声明并且不能嵌套在一个三元组中,所以总是会返回一个三元组。 – CommandZ 2014-02-22 03:10:36