1
0
mirror of https://github.com/php/doc-ru.git synced 2026-04-23 15:28:24 +02:00
Files
Mikhail Alferov c394cf8502 Update 45042fe to En (#1085)
* Update book.xml to en

* Update addcslashes.xml to en

* Update addslashes.xml to en

* Update sprintf.xml to en

* Update chr.xml to en

* Update chunk-split.xml to en

* Update echo.xml to en

* Update explode.xml to en

* Update fprintf.xml to en

* Update html-entity-decode.xml to en

* Update lcfirst.xml to en

* Update md5-file.xml to en

* Update number-format.xml to en

* Update ord.xml to en

* Update echo.xml

* Update print.xml to en

* Update setlocale.xml to en

* Update sha1-file.xml to en

* Update soundex.xml to en

* Update str-getcsv.xml to en

* Update str-pad.xml to en

* Update str-replace.xml to en

* Update stripos.xml to en

* Update stristr.xml to en

* Update strlen.xml to en

* Update strnatcmp.xml to en

* Update strpbrk.xml to en

* Update strpos.xml to en

* Update strrpos.xml to en

* Update strstr.xml to en

* Update strtok.xml toen

* Update strtr.xml to en

* Update substr-compare.xml to en

* Update substr-count.xml to en

* Update substr.xml to en

* Update ucfirst.xml to en

* Update ucwords.xml to en

* Update vfprintf.xml to en
2025-07-04 19:30:56 +03:00

226 lines
8.2 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 45042fef652f1b4e904e809fcbfcf31f6c60670b Maintainer: shein Status: ready -->
<!-- Reviewed: no -->
<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://docbook.org/ns/docbook" xml:id="function.print">
<refnamediv>
<refname>print</refname>
<refpurpose>Выводит строку</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>int</type><methodname>print</methodname>
<methodparam><type>string</type><parameter>expression</parameter></methodparam>
</methodsynopsis>
<para>
Языковая конструкция выводит выражение <parameter>expression</parameter>.
</para>
<para>
<literal>print</literal> — не функция, а языковая конструкция.
Аргумент языковой конструкции — выражение после ключевого слова <literal>print</literal>
без круглых скобок.
</para>
<para>
Основные отличия от конструкции <function>echo</function> состоят в том,
что конструкция <literal>print</literal> принимает только один аргумент
и при каждом вызове возвращает значение <literal>1</literal>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>expression</parameter></term>
<listitem>
<para>
Выражение, которое требуется вывести. Нестроковые значения преобразуются в строки,
даже если <link linkend="language.types.declarations.strict">включили директиву
<literal>strict_types</literal></link>.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Языковая конструкция всегда возвращает <literal>1</literal>.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Примеры использования языковой конструкции <literal>print</literal></title>
<programlisting role="php">
<![CDATA[
<?php
print "print не требует скобок.";
print PHP_EOL;
// Новая строка или пробел не добавляются; ниже выводится "приветмир" в одну строку
print "привет";
print "мир";
print PHP_EOL;
print "Эта строка занимает
несколько строк. Новые строки
тоже выводятся";
print PHP_EOL;
print "Эта строка занимает\nнесколько строк. Новые строки\nтоже выводятся";
print PHP_EOL;
// В аргументах разрешается передавать выражения, которые вычисляются как строки
$foo = "пример";
print "foo — это $foo"; // foo — это пример
print PHP_EOL;
$fruits = ["лимон", "апельсин", "банан"];
print implode(" и ", $fruits); // лимон и апельсин и банан
print PHP_EOL;
// Нестроковые выражения приводятся к строковым,
// даже при установке строгой проверки типов конструкцией declare(strict_types=1)
print 6 * 7; // 42
print PHP_EOL;
// Конструкция print возвращает значение и поэтому допускается в выражениях
// Следующие выходные данные "привет мир"
if ( print "привет" ) {
echo " мир";
}
print PHP_EOL;
// Следующее выражение выводит "true"
( 1 === 1 ) ? print 'true' : print 'false';
print PHP_EOL;
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<note>
<title>Использование с круглыми скобками</title>
<para>
Заключение аргумента конструкции <literal>print</literal> в круглые скобки
не вызовет синтаксической ошибки и создаст синтаксис, который выглядит как обычный
вызов функции. Однако это вводит в заблуждение, поскольку круглые скобки —
часть выводимого выражения, а не часть самого синтаксиса <literal>print</literal>.
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
print "привет";
// Выведет "привет"
print("привет");
// Тоже выведет "привет", потому что ("привет") — корректное выражение
print(1 + 2) * 3;
// Выведет "9"; круглые скобки приводят к тому, что сначала вычисляется выражение 1 + 2, а затем выражение 3 * 3;
// конструкция print видит всё выражение как один аргумент
if (print("привет") && false) {
print " — внутри if";
} else {
print " — внутри else";
}
// Выведет " — внутри if".
// Сначала вычисляется выражение ("привет") && false, которое возвращает false,
// это приводится к пустой строке "" и выводится.
// Затем конструкция print возвращает 1, поэтому выполняется код в блоке if
?>
]]>
</programlisting>
</informalexample>
</para>
<para>
При вызове конструкции <literal>print</literal> в более крупном выражении
иногда требуется взять ключевое слово и его аргумент
в круглые скобки, чтобы получить правильный результат:
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
if ((print "привет") && false) {
print " — внутри if";
} else {
print " — внутри else";
}
// Выведет "привет — внутри else".
// В отличие от предыдущего примера, выражение (print "привет") вычисляется первым.
// После вывода строки "привет" языковая конструкция print возвращает 1,
// поскольку выражение 1 && false — ложно, выполняется код в блоке else
print "привет " && print "мир";
// Выведет "мир1"; выражение print "мир" выполняется в первую очередь,
// тогда выражение "привет" && 1 передается в левую часть print
(print "привет ") && (print "мир");
// Выведет "привет мир"; круглые скобки заставляют выражения print
// выполнятьтся перед оператором &&
?>
]]>
</programlisting>
</informalexample>
</para>
</note>
&note.language-construct;
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>echo</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
-->