Использование возврата в тройном операторе php

Я пытаюсь использовать return в тройном операторе, но получаю сообщение об ошибке:

Parse error: syntax error, unexpected T_RETURN 

Здесь код:

$e = $this->return_errors();
(!$e) ? '' : return array('false', $e);

Возможно ли это?

Спасибо!

Ответы

Ответ 1

Это правильный синтаксис:

return  !$e ? '' : array('false', $e);

Ответ 2

Он не работает на большинстве языков, потому что 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.

Ответ 3

Закрыть. Вам нужно return condition?a:b

Ответ 4

Нет, это невозможно, и это также довольно запутывает по сравнению с:

if($e) {
    return array('false', $e);
}

Ответ 5

Нет, это невозможно. Однако возможно следующее:

$e = $this->return_errors();
return ( !$e ) ? '' : array( false, $e );

Надеюсь, что это поможет.

Ответ 6

Нет. Но вы можете иметь тройное выражение для оператора return.

return (!$e) ? '' : array('false', $e);

Примечание: Это может быть не нужная логика. Я предоставляю его в качестве примера.