آشنایی با دستور while و do-while در php

تاریخ: 16 دی 1399

دستور while ساده ترین نوع از حلقه ها در php می باشد. (حلقه ها برای اجرای چندباره کدها استفاده می شوند)

با استفاده از دستور while می توانیم یک شرط پویا را تست کنیم و تا زمانی که آن شرط درست است، کدهای بلاک را اجرا نماییم:


$x = 1;
while( $x < 4 )
{
     echo 'Mohammad Yousefi <br>';
     $x++;
}

 

دستور while هر بار که به انتهای بلوک رسید، دوباره به شرط while رجوع می کند و اگر درست بود، دستورات بلوک مجددا اجرا می شوند و اگر غلط بود از حلقه خارج می شود. پس در دستور بالا، متن ما سه بار چاپ خواهد شد.

دقت کنید که برای دستورات یک خطی while، نمی توانیم آکولاد را حذف کنیم. چون حلقه بی نهایت تشکیل می شود.

دقیقا مشابه دستور if ، می توانیم از دستور جایگزین while endwhile استفاده کنیم:


$x = 1;
while( $x < 4 ):
    echo 'Mohammad Yousefi <br>';
    $x++;
endwhile;

 

 

چنانچه مشاهده کردیم، در دستور while دقیقا مشابه دستور if، ابتدا یک شرط تست می شود و اگر شرط ما درست بود، بلوکی از کدها اجرا می شوند.

حالت دیگری از while به نام do-while وجود دارد که ابتدا یکبار دستورات بلوک اجرا می شود و در انتها شرط while تست می شود. اگر شرط درست بود یک بار دیگر اجرا می شود. این فرآیند تا زمانی که شرط اشتباه نشود، ادامه پیدا می کند.


$x = 1;
do{
    echo 'Mohammad Yousefi <br>';
    $x++;
}
while($x < 4);

 

با این حساب، دستورات بلوک در do-while حداقل یکبار اجرا می شوند، ولی در while ممکن است یک بار هم اجرا نشوند.

 

یک مثال از استفاده از while

فرض کنید میخواهیم تمام مقادیر یک آرایه را با استفاده از echo چاپ کنیم. بدون استفاده از loop دستور به شکل زیر می شود:


$x = ['one', 'two', 'three', 'four', 'five'];
echo $x[0] . '<br />';
echo $x[1] . '<br />';
echo $x[2] . '<br />';
echo $x[3] . '<br />';
echo $x[4] . '<br />';

 

این دستور با استفاده از حلقه while به شکل ساده زیر خواهد شد:


$x = ['one', 'two', 'three', 'four', 'five'];
$y = 0;
while( $y < count($x) )
{
    echo $x[$y] . '<br />';
    $y++;
}

 

همچنین می توانستیم این دستور را به شکل خفن زیر انجام دهیم:


$x = ['one', 'two', 'three', 'four', 'five'];
while(@$i++<count($x))
    echo $x[$i-1] . '<br />';

 

علامت @ در کنار i$ از خطای not defined جلوگیری می کند.

روش خفن تر این است که تابع count را خارج از while تعریف کنیم تا فقط یکبار اجرا شود:

 
$x = ['one', 'two', 'three', 'four', 'five']; 
$count = count($x);
while(@$i++ < $count) 
    echo $x[$i-1] . '<br />'; 

 

آموزش بعدی >> آشنایی با حلقه for در php

دیدگاهتان را بنویسید

طراحی افزونه وردپرس