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

ساختار while

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

شکل کلی استفاده از آن به شکل زیر است:

 

که به جای condition شرط مورد نظر قرار می گیرد و کدهای جهت اجرا بین آکولاد { } قرار می گیرند.

به مثال زیر دقت کنید:

 

خروجی:

مثالی ساده از استفاده حلقه while در php

خروجی مثال بالا

در این مثال ابتدا متغیر i با مقدار 1 مقداردهی می شود. سپس بررسی می شود که آیا این متغیر کم تر از 6 است؟ و چون نتیجه “بله” است دستورات مربوطه اجرا می شوند. هر بار که حلقه اجرا شود (5 بار) جمله ای همراه با متغیر i چاپ می شود و سپس یک مقدار به i افزوده می شود.

در اولین بار که حلقه اجرا می شود مقدار i برابر 1 است، در نتیجه وارد حلقه می شود و عبارت “Index is” همرا با مقدار i که برای اولین بار 1 است به همراه عبارت <br/> که برای رفتن به خط بعدی است چاپ می شود. سپس یک مقدار به i اضافه می شود و دوباره حلقه با مقدار 2 برای i اجرا می شود و به این صورت تازمانی که متغیر i به 5 برسد جلقه اجرا می شود. اما پس از آن چون متغیر i از 5 به 6 می رسد، برای بار بعد وارد حلقه نخواهد شد.

در این حلقه نیز مانند حلقه for و ساختار شرطی if اگر دستورات مربوط به حلقه تنها 1 خط باشد اجباری برای استفاده از آکولاد { } نیست اما اگر دستورات بیش از 1 خط باشد باید از این نشان استفاده کرد. اگر دستورات چندین خط باشد ولی از این کاراکتر استفاده نشود تنها خط اول از دستورات اجرا خواهد شد.

همانطور که می بینید این برنامه را با استفاده از حلقه ی for نیز نوشتیم. مشاده می کنید که استفاده از حلقه for در این مثال بسیار ساده تر بود اما حلقه های while گستردگی بیش تری دارند و برنامه هایی هستند که نمی توان آن ها را با استفاده از حلقه های for نوشت و حلقه while به کمک می می آید.

ساختار do…while

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

شکل کلی آن به صورت زیر است:

 

همانطور که می بینید جای دستورات و شرط برعکس شده است و به همین دلیل دستورات مربوطه در مقابل شرط while نوشته نمی شوند و به همین دلیل از کلمه ی do برای مشخص کردن کدها استفاده می کنیم و سپس با استفاده از while شرط را بررسی می کنیم. همچنین باید در پایان خط مربوط به دستور while از کاراکتر ; استفاده شود.

به مثال زیردقت کنید:

 

خروجی:

مثالی ساده از استفاده حلقه while در php

خروجی مثال بالا

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

 

خروجی:

مثالی ساده از استفاده حلقه do while در php

خروجی

دقت کنید که در این مثال به جای شرط $i < 6 شرط $i > 6 را قرار دادیم. این کد ابتدا یک بار عبارت “Index is” را به همراه مقدار متغیر i و عبارت “<br/>” (که برای رفتن به خط جدید است) چاپ می کند و اگر شرط مربوطه برقرار باشد بازهم این عمل را تکرار می کند اما شرط 1 > 6 شرط نادرستی است و به دستورات ادامه نمی دهد.