I'm trying to use return in a ternary operator, but receive an error:
Parse error: syntax error, unexpected T_RETURN
Here's the code:
$e = $this->return_errors();
(!$e) ? '' : return array('false', $e);
Is this possible?
Thanks!
I'm trying to use return in a ternary operator, but receive an error:
Parse error: syntax error, unexpected T_RETURN
Here's the code:
$e = $this->return_errors();
(!$e) ? '' : return array('false', $e);
Is this possible?
Thanks!
This is the correct syntax:
return !$e ? '' : array('false', $e);
Close.
You'd want return condition?a:b
It doesn't work in most languages because return
is a statement (like if
, while
, etc.), rather than an operator that can be nested in an expression. Following the same logic you wouldn't try to nest an if
statement within an expression:
// 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);
It wouldn't work for break
and continue
as well.
No it's not possible, and it's also pretty confusing as compared to:
if($e) {
return array('false', $e);
}
No. But you can have a ternary expression for the return
statement.
return (!$e) ? '' : array('false', $e);
Note: This may not be the desired logic. I'm providing it as an example.
No, that's not possible. The following, however, is possible:
$e = $this->return_errors();
return ( !$e ) ? '' : array( false, $e );
Hope that helps.