﻿<h1 class=p1>Операторы цикла/ While</h1>
<p class=text>Оператор <em class=gr>while</em> называется оператором цикла с предусловием. При входе в цикл вычисляется выражение условие, и, если его значение отлично от нуля, выполняется тело цикла. Затем вычисления выражения условия и операторов тела цикла выполняется до тех пор, пока значение выражения условия не станет равным нулю. Оператором <em class=gr>while</em> удобно пользоваться для просмотра всевозможных последовательностей, если в конце них находится заранее известный символ. (Это очень удобно в C++, к примеру для определения длины строки, поскольку в С++, по определению, строка есть последовательность символов типа char, заканчивающаяся нулевым символом). 
</p>
<p class=text>Пример простейшего цикла <em class=gr>while</em>:</p>
<blockquote>
<pre>
<em class=red>&lt;?</em>
   <b>$var</b> = 5;
   <b>$i</b> = 0;
   <em class=gr>while</em>(<b>++$i</b> <= <b>$var</b>)
   <em class=gr>{</em>
      <em class=gr>echo</em>(<b>$i</b>); <em class=gr>echo</em>('&lt;br&gt;');  
   <em class=gr>}</em>
<em class=red>?&gt;</em>
</pre>
</blockquote>
<p class=text>Этот код выдает в окне браузера цифры от одного до пяти:</p>
<table border="0">
    <tr>
        <td colspan="2"><img src="vk/images/gl2_5.gif" tppabs="http://site/bookphp/vk/images/gl2_5.gif" border="0" width="264" height="90" alt=""></td>
    </tr>
    <tr>
        <td width="15px">&nbsp;</td>
        <td width=200>
        <b>1<br>
        2<br>
        3<br>
        4<br>
        5<br></b>
        </td>
    </tr>
</table>

<p class=text>Для выхода из цикла применяется оператор <em class=gr>break</em>. При обнаружении этого оператора текущая итерация цикла прекращается, и последующие итерации не происходят. При выполнении следующего примере, несмотря на то, что переменная $var = 7, в окне браузера появятся цифры от 1 до 5. 
</p>
<blockquote>
<pre>
<em class=red>&lt;?</em>
   <b>$var</b> = 7;
   <b>$i</b> = 0;
   <em class=gr>while</em>(<b>++$i</b> <= <b>$var</b>)
   <em class=gr>{</em>
      <em class=gr>echo</em>(<b>$i</b>);
      <em class=gr>echo</em>('&lt;<b>br</b>&gt;');
      <em class=gr>if</em>(<b>$i</b>==3)<em class=gr>break</em>;
   <em class=gr>}</em>
<em class=red>?&gt;</em>
</pre>
</blockquote>
<p class=text>Иногда бывает нужно прервать только текущую итерацию, и перейти сразу к следующей. Для этого применяется оператор <em class=gr>continue</em>:
</p>
<blockquote>
<pre>
<em class=red>&lt;?</em>
   <b>$var</b> = 7;
   <b>$i</b> = 0;
   <em class=gr>while</em>(<b>++$i</b> <= <b>$var</b>)
   <em class=gr>{</em>
      <em class=gr>if</em>(<b>$i</b>==5)
      <em class=gr>{</em>
         <em class=gr>continue</em>;
      <em class=gr>}</em>
      <em class=gr>echo</em>(<b>$i</b>);
      <em class=gr>echo</em>('&lt;<b>br</b>&gt;');
   <em class=gr>}</em>
<em class=red>?&gt;</em>
</pre>
</blockquote>
<p class=text>В этом примере выводятся цифры от 1 до 7, кроме цифры 5:</p>
<table border="0">
    <tr>
        <td colspan="2"><img src="vk/images/gl2_5.gif" tppabs="http://site/bookphp/vk/images/gl2_5.gif" border="0" width="264" height="90" alt=""></td>
    </tr>
    <tr>
        <td width="15px">&nbsp;</td>
        <td width=200>
        <b>1<br>
        2<br>
        3<br>
        4<br>
        6<br>
        7</b>
        </td>
    </tr>
</table>
<p class=text>
Заметим, что если Вы условный оператор поставите после операторов <em class=gr>echo</em>, код будет ошибочным, и выведутся все цифры от 1 до 20, поскольку проверка условия выхода из цикла на данной итерации, будет происходить уже после выполнения этой итерации.    
</p>
<p class=text>Бесконечный цикл реализуется при помощи оператора <em class=gr>while</em> следующим образом:</p>
<blockquote>
<pre>
   <em class=gr>while</em>(1)
   <em class=gr>{</em>
        ...
   <em class=gr>}</em>
</pre>
</blockquote>
<p class=text>Это тоже самое, что и запись <em class=gr>while</em>(<b>true</b>).</p>