حلقه های php دستوراتی هستند که بلوک خاصی از کد را تا زمانی که شرط خاصی برقرار باشد، اجرا می کنند.
برخی اوقات هنگام کدنویسی متوجه می شویم که می خواهیم قسمتی از کد (بلوکی از کدها) چندین بار و پشت سر هم اجرا شوند. در چنین موقعیتی تکرار کردن کدها فقط باعث طولانی تر شدن سورس کد و کُند شدن برنامه ما می شود. برای حل این مشکل حلقه ها در زبان php ارائه شدند:
while
: یک مجموعه کد را تا زمانی که شرط خاصی برقرار باشد تکرار می کند. از این به بعد به این عمل می گوییم «گردش کردن حلقه».do...while
: ابتدا یک بار (فارغ از شرط) بلوک کد را اجرا می کند سپس تا زمانی که شرط برقرار باشد بلوک را دوباره اجرا می کند.for
: به تعداد دفعاتی که ما مشخص کنیم کدهای بلوک را اجرا می کند.foreach
: در تمام عناصر یک آرایه گردش کرده و بلوک کد را روی تک تک این عناصر اجرا می کند.تا زمانی که شرط خاصی برقرار باشد یک مجموعه کد را تکرار می کند. ساختار کلی این دستور به شکل زیر است:
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 { 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 در php کدها را به تعدادی که ما مشخص کنیم اجرا می کنند. این حلقه ها زمانی کاربرد دارند که خودمان از قبل بدانیم چند بار می خواهیم حلقه را اجرا کنیم. ساختار کلی حلقه for در php به شکل زیر است:
for (init counter; test counter; increment counter) { code to be executed; }
پارامترهای ساختار بالا:
مثال زیر اعداد را از 0 تا 10 نمایش می دهد:
<!DOCTYPE html> <html> <body> <?php for ($x = 0; $x <= 10; $x++) { echo "The number is: $x <br>"; } ?> </body> </html>
این حلقه فقط روی آرایه ها کار می کند و بین تمام جفت های 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
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.