Используйте echo внутри php one line if оператор

Я использую, чтобы написать одну строку, если операторы в сочетании с эхом, как это:

<?php echo ( true ) ? 'true' : 'false'; ?>

сегодня я изменил существующую многострочную инструкцию if иecho оказался внутри оператора, который дал мне ошибку разбора:

<?php ( true ) ? echo 'true' :  echo 'false'; ?>

используя print вместо echo заставляет его работать, хотя. Я считаю, что это работает, потому что print это функции. обновление: print это не функция, она просто ведет себя как одна, что означает, что она имеет возврат значение.

<?php ( true ) ? print 'true' :  print 'false'; ?>

чего я не понимаю, почему " Эхо " не работает. Как я понимаю, приведенный выше синтаксис просто стенография для общего оператора if, поэтому это тоже не должно работать:

if (true) echo 'true'; else echo 'false';

но это не так. Кто-то, кто знает?

3 ответов


Как вы только упомянули в своем вопросе, что print Это функции но печать не является функцией но он имеет некоторое возвращаемое значение, поэтому его можно использовать и в выражениях, но с другой стороны echo не имеет возвращаемого значения.

также имейте в виду, что тернарный оператор возвращает значение.

" в C-подобных языках существует различие между утверждениями и выражениями. Синтаксически, echo является (простой) оператор, например break или return и print, является (унарным) оператором, например "!" или."~" Поэтому, как и любое другое утверждение, echo не может быть частью выражения"

PHP рассматривает echo как оператор.все, что вы напишете, будет отображаться как есть.

вы можете прочитать подробное объяснение здесь ссылка: сравнение печати PHP и echo


как вы можете прочитать из документации PHP:

http://php.net/manual/en/language.operators.comparison.php

The expression (expr1) ? (expr2) : (expr3) evaluates to expr2 if expr1 evaluates to TRUE, and expr3 if expr1 evaluates to FALSE.

тернарный оператор ожидает expressions, который является просто причудливый способ сказать a value. Echo ничего не возвращает и поэтому не имеет значения, что означает, что это не выражение.

печать с другой стороны, возвращает something поскольку это функция, делая ее допустимым выражением.


в PHP печать и эхо не являются функцией, но языковая конструкция и в основном печать и эхо не нуждаются в круглых скобках.

разница в том, что печать является конструкцией laguage и может вести себя как функция, но эхо не может!

в PHP:Эхо - инструкцию