1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-26 00:32:15 +01:00
Files
archived-doc-ru/language/control-structures/elseif.xml
2024-03-06 16:05:02 +03:00

113 lines
4.7 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: bbaf4fea6946bf6d0b67573d5f2f96c5a2c5d678 Maintainer: mch Status: ready -->
<!-- Reviewed: no -->
<sect1 xml:id="control-structures.elseif" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>elseif/else if</title>
<?phpdoc print-version-for="elseif"?>
<para>
Конструкция <literal>elseif</literal>, как ясно из названия, объединяет
конструкции <literal>if</literal> и <literal>else</literal>.
Как и конструкция <literal>else</literal>, она расширяет инструкцию <literal>if</literal>,
чтобы выполнять другую инструкцию тогда, когда PHP вычисляет выражение начальной конструкции
<literal>if</literal> как &false;. Отличие от конструкции <literal>else</literal> состоит в том,
что конструкция <literal>elseif</literal> выполнит альтернативное
выражение только тогда, когда PHP вычислит условное выражение <literal>elseif</literal>
как &true;. Следующий код, в зависимости от значений переменных,
будет выводить
«<computeroutput>a больше b</computeroutput>»,
«<computeroutput>a равно b</computeroutput>»
или «<computeroutput>a меньше b</computeroutput>»:
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
if ($a > $b) {
echo "a больше b";
} elseif ($a == $b) {
echo "a равно b";
} else {
echo "a меньше b";
}
?>
]]>
</programlisting>
</informalexample>
</para>
<simpara>
Допустимо указывать больше одной конструкции <literal>elseif</literal> в одной
инструкции <literal>if</literal>. PHP выполняет первое выражение
<literal>elseif</literal>, которое вычисляет как &true;. В PHP допустимо
писать <literal>else if</literal> в два слова, тогда поведение будет идентичным
конструкции <literal>elseif</literal> в одно слово. Синтаксическое отличие есть
(в языке C пишут в два слова), но в итоге оба выражения дадут один
и тот же результат.
</simpara>
<simpara>
PHP выполнит инструкцию <literal>elseif</literal> только тогда,
когда вычислит предшествующее выражение <literal>if</literal> и предшествующие
выражения <literal>elseif</literal> как &false;, а текущее выражение
<literal>elseif</literal> — как &true;.
</simpara>
<note>
<simpara>
Заметьте, что записи <literal>elseif</literal> и <literal>else if</literal>
будут равнозначны только в синтаксисе с фигурными скобками,
как в приведённом примере. В синтаксисе с двоеточием для определения условий
<literal>if</literal> и <literal>elseif</literal>,
конструкция <literal>elseif</literal> пишется в одно слово.
PHP выдаст ошибку синтаксического анализа и завершит работу, если запись
конструкции <literal>else if</literal> разделена на два слова.
</simpara>
</note>
<para>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
/* Некорректный способ: */
if ($a > $b):
echo $a . " больше " . $b;
else if ($a == $b): // Не скомпилируется.
echo "Строка выше вызывает фатальную ошибку.";
endif;
/* Корректный способ: */
if ($a > $b):
echo $a . " больше " . $b;
elseif ($a == $b): // Заметьте, тут одно слово.
echo $a . " равно " . $b;
else:
echo $a . " не больше и не равно " . $b;
endif;
?>
]]>
</programlisting>
</informalexample>
</para>
</sect1>
<!-- 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
-->