echo Выводит строки &reftitle.description; voidecho stringexpressions Выводит одно или несколько выражений без дополнительных символов новой строки или пробелов. Придерживаясь строгой терминологии, echo — это не функция, а языковая конструкция. Её аргументы — это список выражений, следующих за ключевым словом echo, разделённых запятыми и не ограниченных круглыми скобками. Языковая конструкция echo, в отличие от других языковых конструкций, не возвращает никаких значений, поэтому её нельзя использовать в контексте выражения. У конструкции echo есть также краткий синтаксис, где можно сразу после открывающего тега поставить знак равенства. Сокращённый синтаксис работает даже с отключённым параметром конфигурации short_open_tag. foo. ]]> Основные отличия от конструкции print состоят в том, что конструкция echo умеет принимать много аргументов и не возвращает значение. &reftitle.parameters; expressions Одно или несколько строковых выражений для вывода, разделённых запятыми. Нестроковые значения будут преобразованы в строки, даже если включена директива strict_types. &reftitle.returnvalues; &return.void; &reftitle.examples; Примеры использования языковой конструкции <literal>echo</literal> ]]> &reftitle.notes; ¬e.language-construct; Использование с круглыми скобками Заключение одного аргумента для конструкции echo в круглые скобки не вызовет синтаксической ошибки и создаст синтаксис, который выглядит как обычный вызов функции. Однако это может ввести в заблуждение, потому что круглые скобки интерпретируются как часть выводимого выражения, а не часть самого синтаксиса echo. <programlisting role="php"> <![CDATA[ <?php echo "привет"; // выведет «привет» echo("привет"); // также выведет «привет», потому что ("привет") — корректное выражение echo(1 + 2) * 3; // выведет «9»; круглые скобки приводят к тому, что сначала вычисляется 1 + 2, а затем 3 * 3 // оператор echo видит всё выражение как один аргумент echo "привет", " мир"; // выведет «привет мир» echo("привет"), (" мир"); // выведет «привет мир»; круглые скобки являются частью каждого выражения echo("привет", " мир"); // Выбросит ошибку синтаксического анализа, потому что ("привет", "мир") — некорректное выражение. ?> ]]> </programlisting> </example> </para> </note> <tip> <para> Передача нескольких аргументов в <literal>echo</literal> помогает избегать осложнений, связанных с приоритетом оператора конкатенации в PHP. Например, у оператора конкатенации более высокий приоритет, чем у тернарного оператора, а до PHP 8.0.0 у него был тот же приоритет, что и у сложения с вычитанием: </para> <programlisting role="php"> <![CDATA[ <?php // Ниже выражение 'Привет, ' . isset($name) вычисляется первым // и всегда имеет значение true, поэтому аргумент для echo всегда равен значению переменной $name echo 'Привет, ' . isset($name) ? $name : 'Джон Доу' . '!'; // Предполагаемое поведение требует дополнительных скобок echo 'Привет, ' . (isset($name) ? $name : 'Джон Доу') . '!'; // До PHP 8.0.0 пример ниже выведет «2», а не «Сумма: 3». echo 'Сумма: ' . 1 + 2; // И снова, добавление круглых скобок указывает точный порядок оценки выражения. echo 'Сумма: ' . (1 + 2); ]]> </programlisting> <para> Если передано несколько аргументов, то скобки не нужны для принудительной установки приоритета, потому что каждое выражение отдельно: </para> <programlisting role="php"> <![CDATA[ <?php echo "Привет, ", isset($name) ? $name : "Джон Доу", "!"; echo "Сумма: ", 1 + 2; ]]> </programlisting> </tip> </refsect1> <refsect1 role="seealso"> &reftitle.seealso; <para> <simplelist> <member><function>print</function></member> <member><function>printf</function></member> <member><function>flush</function></member> <member><link linkend="language.types.string">Способы работы со строками</link></member> </simplelist> </para> </refsect1> </refentry> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t indent-tabs-mode:nil sgml-parent-document:nil sgml-default-dtd-file:"~/.phpdoc/manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 -->