حلقه های while و for در PHP

for and while Loops in PHP

درسنامه درس 9 از سری آموزش PHP 7
حلقه های while و for در زبان PHP

حلقه های php دستوراتی هستند که بلوک خاصی از کد را تا زمانی که شرط خاصی برقرار باشد، اجرا می کنند.

برخی اوقات هنگام کدنویسی متوجه می شویم که می خواهیم قسمتی از کد (بلوکی از کدها) چندین بار و پشت سر هم اجرا شوند. در چنین موقعیتی تکرار کردن کدها فقط باعث طولانی تر شدن سورس کد و کُند شدن برنامه ما می شود. برای حل این مشکل حلقه ها در زبان php ارائه شدند:

  • while : یک مجموعه کد را تا زمانی که شرط خاصی برقرار باشد تکرار می کند. از این به بعد به این عمل می گوییم «گردش کردن حلقه».
  • do...while : ابتدا یک بار (فارغ از شرط) بلوک کد را اجرا می کند سپس تا زمانی که شرط برقرار باشد بلوک را دوباره اجرا می کند.
  • for : به تعداد دفعاتی که ما مشخص کنیم کدهای بلوک را اجرا می کند.
  • foreach : در تمام عناصر یک آرایه گردش کرده و بلوک کد را روی تک تک این عناصر اجرا می کند.

حلقه while در PHP

تا زمانی که شرط خاصی برقرار باشد یک مجموعه کد را تکرار می کند. ساختار کلی این دستور به شکل زیر است:

while (condition is true) {
    code to be executed;
}

در مثال زیر ابتدا مقدار X را 1 قرار می دهیم. سپس کدهای حلقه While تا زمانی که x برابر یا کمتر از 5 شود اجرا خواهند شد. در هر دور از اجرا شدن حلقه یک واحد به x اضافه می شود (++x$):

<!DOCTYPE html>
<html>
<body>

<?php  
$x = 1;
 
while($x <= 5) {
  echo "The number is: $x <br>";
  $x++;
} 
?>  

</body>
</html>

مشاهده خروجی

حلقه do...while

این حلقه حداقل یک بار بلوک کدها را اجرا می کند اما بعد از آن شرط مورد نظر را بررسی می کند و در صورت برقرار آن، بلوکه ها را دوباره اجرا می کند تا زمانی که شرط دیگر برقرار نباشد. ساختار کلی این حلقه بدین شکل است:

do {
    code to be executed;
} while (condition is true);

مثال زیر ابتدا مقدار x را 1 قرار می دهد سپس حلقه یک خروجی می گیرد و به مقدار x یک واحد اضافه می کند. سپس دوباره شرط بررسی می شود (آیا X کمتر یا مساوی با 5 است؟) و تا زمانی که شرط برقرار باشد حلقه تکرار می شود:

<!DOCTYPE html>
<html>
<body>

<?php 
$x = 1;

do {
    echo "The number is: $x <br>";
    $x++;
} while ($x <= 5);
?>

</body>
</html>

مشاهده خروجی

نکته: در do while شرط پس از یک بار اجرای حلقه بررسی می شود بنابراین حتی اگر شرط صحیح نباشد حلقه حداقل یک بار اجرا خواهد شد.

به این مثال توجه کنید:

<!DOCTYPE html>
<html>
<body>

<?php 
$x = 6;

do {
    echo "The number is: $x <br>";
    $x++;
} while ($x <= 5);
?>

</body>
</html>

مشاهده خروجی

همانطور که می بینید شرط از همان ابتدا هم غلط است اما باز هم یک بار اجرای حلقه را می بینیم.

حلقه for

حلقه for در php کدها را به تعدادی که ما مشخص کنیم اجرا می کنند. این حلقه ها زمانی کاربرد دارند که خودمان از قبل بدانیم چند بار می خواهیم حلقه را اجرا کنیم. ساختار کلی حلقه for در php به شکل زیر است:

for (init counter; test counter; increment counter) {
    code to be executed;
}

پارامترهای ساختار بالا:

  • init counter: مقدار اولیه شمارنده حلقه را مشخص می کند.
  • test counter: در هر گردش حلقه اندازه گیری می شود. اگر مقدار آن برابر TRUE باشد حلقه ادامه می دهد، در غیر این صورت گردش حلقه تمام شده و از آن خارج می شویم.
  • increment counter: مقداری که در هر بار اجرای حلقه به شمارنده اضافه می شود.

مثال زیر اعداد را از 0 تا 10 نمایش می دهد:

<!DOCTYPE html>
<html>
<body>

<?php  
for ($x = 0; $x <= 10; $x++) {
  echo "The number is: $x <br>";
}
?>  

</body>
</html>

مشاهده خروجی

حلقه foreach

این حلقه فقط روی آرایه ها کار می کند و بین تمام جفت های key/value گردش می کند. ساختار کلی این حلقه به شکل زیر است:

foreach ($array as $value) {
    code to be executed;
}

در هر بار گردش حلقه، مقدار عنصر فعلی حلقه به value$ داده می شود و به سراغ عضو بعدی حلقه می رویم تا زمانی که بین تمام اعضاء گردش کرده باشیم.

مثال زیر اعضای آرایه را لیست کرده و نمایش می دهد:

<!DOCTYPE html>
<html>
<body>

<?php  
$colors = array("red", "green", "blue", "yellow"); 

foreach ($colors as $value) {
  echo "$value <br>";
}
?>  

</body>
</html>

مشاهده خروجی

یک مثال عملی

ما یک آرایه فرضی داریم و می خواهیم به چند روش مختلف در آن گردش کنیم. با دیدن این چند روش روی بحث حلقه ها تسلط نسبی پیدا می کنید.

روش اول - استفاده از while:

$CodeWallTutorialArray = ["Eggs", "Bacon", "HashBrowns", "Beans", "Bread", "RedSauce"];
        $arrayLength = count($CodeWallTutorialArray);
        
        $i = 0;
        while ($i < $arrayLength)
        {
            echo $CodeWallTutorialArray[$i] ."<br />";
            $i++;
        }

خروجی:

Eggs
Bacon
HashBrowns
Beans
Bread
RedSauce

روش دوم - استفاده از حلقه حلقه for در php:

به کد زیر توجه کنید:

for ($i = 0; $i < count($arr); $i++)

دستور count یک آرایه را گرفته و تعداد اعضای آن را می شمارد. بنابراین می توانیم به این روش هم عمل کنیم!

        $CodeWallTutorialArray = ["Eggs", "Bacon", "HashBrowns", "Beans", "Bread", "RedSauce"];

        for ($i = 0; $i < count($CodeWallTutorialArray); $i++)  {
            echo $CodeWallTutorialArray[$i] ."<br />";
        }

خروجی:

Eggs
Bacon
HashBrowns
Beans
Bread
RedSauce

روش سوم - استفاده از Foreach:

       $foodArray = ["Eggs", "Bacon", "HashBrowns", "Beans", "Bread"];

        foreach ($foodArray as $food)  {
            echo $food ."<br />";
        }

خروجی:

Eggs
Bacon
HashBrowns
Beans
Bread

روش چهارم - استفاده از do while:

       $foodArray = ["Eggs", "Bacon", "HashBrowns", "Beans", "Bread"];
        $i = 0;
        
        do {
            echo $foodArray[$i] . "<br />";
            $i++;
        }
        while ($i < count($foodArray));

خروجی:

Eggs
Bacon
HashBrowns
Beans
Bread

روش پنجم - استفاده از ArrayIterator و شیء گرایی:

        $programmingLanguagesArray = ["PHP", "C++", "C#", "Python", "Java"];
        
        $arrObject = new ArrayObject($programmingLanguagesArray);
        $arrayIterator = $arrObject->getIterator();

        while( $arrayIterator->valid() )
        {
            echo $arrayIterator->current() . "<br />";
            $arrayIterator->next();
        }

خروجی:

PHP
C++
C#
Python
Java

تمام فصل‌های سری ترتیبی که روکسو برای مطالعه‌ی دروس سری آموزش PHP 7 توصیه می‌کند:
نویسنده شوید
دیدگاه‌های شما

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.