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/do-while.xml
Sergey Panteleev daef8df962 Обнуление тега Reviewed (#364)
[skip-lint]
[skip-spellcheck]
2021-11-16 13:03:53 +03:00

95 lines
3.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: 7104ee97ced1768a3231588dfc0bc0d7eb1117ad Maintainer: shein Status: ready -->
<!-- Reviewed: no -->
<sect1 xml:id="control-structures.do.while" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>do-while</title>
<?phpdoc print-version-for="dowhile"?>
<simpara>
Цикл <literal>do-while</literal> очень похож на цикл <literal>while</literal>,
с тем отличием, что истинность выражения проверяется в конце итерации, а не в начале.
Главное отличие от обычного цикла <literal>while</literal> в том, что
первая итерация цикла <literal>do-while</literal> гарантированно выполнится
(истинность выражения проверяется в конце итерации), тогда как она может
не выполниться в обычном цикле <literal>while</literal> (истинность выражения
которого проверяется в начале выполнения каждой итерации, и если изначально
имеет значение &false;, то выполнение цикла будет прервано сразу).
</simpara>
<para>
Есть только один вариант синтаксиса цикла <literal>do-while</literal>:
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
$i = 0;
do {
echo $i;
} while ($i > 0);
?>
]]>
</programlisting>
</informalexample>
</para>
<simpara>
В примере цикл будет выполнен ровно один раз, так как после первой
итерации, когда проверяется истинность выражения, она будет
вычислена как &false; (<varname>$i</varname> не больше 0)
и выполнение цикла прекратится.
</simpara>
<para>
Опытные пользователи С могут быть знакомы с другим использованием
цикла <literal>do-while</literal>, которое позволяет остановить
выполнение хода программы в середине блока, для этого нужно обернуть
нужный блок кода вызовом <literal>do-while</literal> (0) и использовать
<link linkend="control-structures.break"><literal>break</literal></link>.
Следующий фрагмент кода демонстрирует этот подход:
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
do {
if ($i < 5) {
echo "i ещё недостаточно велико";
break;
}
$i *= $factor;
if ($i < $minimum_limit) {
break;
}
echo "значение i уже подходит";
/* обработка i */
} while (0);
?>
]]>
</programlisting>
</informalexample>
</para>
<simpara>
Можно использовать оператор
<link linkend="control-structures.goto"><literal>goto</literal></link>
вместо подобного "хака".
</simpara>
</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
-->