mirror of
https://github.com/php/doc-ru.git
synced 2026-03-24 07:42:22 +01:00
* Update new-features.xml to En * Update variables.xml to en * Update elseif.xml to en * Update match.xml to en * Update array.xml to en
123 lines
4.8 KiB
XML
123 lines
4.8 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- EN-Revision: 22583751fbfdaa3eaa41aeb6470d1343f5cb2c78 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;
|
||
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</informalexample>
|
||
|
||
|
||
<informalexample>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
|
||
/* Корректный способ: */
|
||
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
|
||
-->
|