php-doc-en/language/control-structures/else.xml
2021-12-09 10:12:38 +03:00

87 lines
2.5 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<sect1 xml:id="control-structures.else" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>else</title>
<?phpdoc print-version-for="else"?>
<para>
Often you'd want to execute a statement if a certain condition is
met, and a different statement if the condition is not met. This
is what <literal>else</literal> is for. <literal>else</literal>
extends an <literal>if</literal> statement to execute a statement
in case the expression in the <literal>if</literal> statement
evaluates to &false;. For example, the following
code would display <computeroutput>a is greater than
b</computeroutput> if <varname>$a</varname> is greater than
<varname>$b</varname>, and <computeroutput>a is NOT greater
than b</computeroutput> otherwise:
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
if ($a > $b) {
echo "a is greater than b";
} else {
echo "a is NOT greater than b";
}
?>
]]>
</programlisting>
</informalexample>
The <literal>else</literal> statement is only executed if the
<literal>if</literal> expression evaluated to
&false;, and if there were any
<literal>elseif</literal> expressions - only if they evaluated to
&false; as well (see <link
linkend="control-structures.elseif">elseif</link>).
</para>
<note>
<title>Dangling else</title>
<para>
In case of nested <literal>if</literal>-<literal>else</literal> statements,
an <literal>else</literal> is always associated with the nearest <literal>if</literal>.
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
$a = false;
$b = true;
if ($a)
if ($b)
echo "b";
else
echo "c";
?>
]]>
</programlisting>
</informalexample>
Despite the indentation (which does not matter for PHP), the <literal>else</literal>
is associated with the <literal>if ($b)</literal>, so the example does not produce
any output. While relying on this behavior is valid, it is recommended to avoid
it by using curly braces to resolve potential ambiguities.
</para>
</note>
</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
-->