Я пытаюсь использовать 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); }
Нет, это невозможно. Однако возможно следующее:
$e = $this->return_errors(); return ( !$e ) ? '' : array( false, $e );
Надеюсь, это поможет.
Нет. Но вы можете иметь тройное выражение для заявления о return
.
return (!$e) ? '' : array('false', $e);
Примечание. Это может быть не нужная логика. Я предоставляю его в качестве примера.