مفاهیمی که در این مقاله یاد می‌گیرید

  • سینتکس حلقه‌های پی اچ پی

  • انواع حلقه‌ها در پی اچ پی

  • مثال کاربردی از حلقهه‌ها در پی اچ پی

حلقه for

یکی از مهم‌ترین حلقه‌هایی که در بسیاری از زبان‌های برنامه نویسی وجود دارد حلقه for است که در PHP هم وجود دارد و به ما این امکان را می‌دهد تا اجرا شدن تعداد دفعات کدهایمان (به هر مقدار دلخواه) را مشروط کنیم به صادق بودن یا نبودن رابطه‌ای خاص، نوع ساختار این دستور در زبان برنامه نویسی PHP مشابه زبان برنامه نویسی C هست، این حلقه از سه بخش اصلی تشکیل شده که در زیر مشاهده می‌کنید

for(initialization expr; test expr; update expr)
statement

  1. initialization expr (مقداردهی اولیه یک متغیر)
  2. test expr (بررسی یک رابطه که اجرای حلقه مشروط به آن است)
  3. update expr (عملگری که روی متغیر بعد از هر بار اجرای حلقه انجام می‌شود)

بخش شرطی آن به عنوان یک boolean بررسی میشود در صورتی که شرط مدنظر به عنوان مقدار true ارزیابی شود دستورات شما اجرا میشود در انتهای هر تکرار، بخش update expr اجرا می‌شود و مجدد شرط بررسی می‌شود تا زمانی که مقدار شرط برابر true باشد دستورات اجرا می‌شوند در غیر این صورت اجرای برنامه به خارج از بلوک دستور for هدایت می‌شود

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

مثال #۱ نمونه‌های زیر از حلقه for همه اعداد ۱ تا ۱۰ را نمایش‎ می‌دهند

کپی

مثال #۲ نمونه رایجی که برنامه نویسان از حلقه for استفاده می‌کنند

کپی

کد فوق می تواند کند باشد ، زیرا اندازه آرایه با هر تکرار واکشی می شود. از آنجا که اندازه هرگز تغییر نمی کند ، حلقه به راحتی با استفاده از یک متغیر میانی برای ذخیره اندازه به جای فراخوانی مکرر تعداد با تابع ()count بهینه می شود

مثال #۳ نمونه بهینه کد تغیرر مقادیر آرایه با حلقه for

کپی

مثال #۴ حرکت روی مقادیر یک رشته با حلقه for

کپی

حلقه فوق مقادیر R S T U V W X Y Z AA AB AC را برمی‌گرداند

منبع : php.net

حلقه while و do while

حلقه‌ while از ساده‌ترین حلقه‌ها در زبان برنامه نویسی php هست که می‌تواند برای مواردی که تعداد نا مشخص است به شدت کاربردی باشد مثل دریافت تعداد کاربران از دیتابیس یا هر مورد مشابه‌ای که از دیتابیس بازیابی می‌شود به دلیل اینکه تعداد آن نا مشخص و هر لحظه در حال به روز شدن و افزایش است کاربرد دارد نوع نوشتاری این حلقه به شکل زیر است به بیان دیگر حلقه while تا زمانی که شرط شما برابر با مقدار true (درست) باشد کدهای شما را اجرا می‌کند

مانند تمامی ساختارهای کنترل در php می‌توانید برای اجرای چندین خط کد در یک حلقه یا شرط از ساختار بلوکی {} یا : و ;endwhile استفاده کنید

while(test expr)
statement

مثال #۵ چاپ کردن عدد ۱ تا ۱۰ با حلقه while

کپی

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

مثال #۶ چاپ مقدار متغیر در حلقه do while

کپی

شرط‌های بالا با اینکه برابر با مقدار false می‌شوند با این حال حداقل یکبار اجرا می‌شوند بعد از اولین تکرار کنترل برنامه به حارج از حلقه هدایت می‌شود

منبع : php.net

منبع : php.net

حلقه foreach

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

foreach (iterable_expression as $value)
statement
foreach (iterable_expression as $key => $value)
statement

در نوع اول مقدار متغیری که foreach قابلیت تکرار روی آن را دارد با هر بار تکرار در متغیر value$ قرار می‌گیرد

در نوع دوم کلید (یا همان اندیس آرایه‌ها) متغیری که foreach قابلیت حرکت روی آن را دارد با هر بار تکرار در متغیر key$ قرار می‌دهد

برای درک بیشتر حلقه foreach به مثال‌های زیر توجه کنید

مثال #۷ حرک روی آرایه با foreach

کپی

شما نمی‌توانید مقدار متغیرتان را در حلقه foreach تغییر دهید مگر از علامت & که به معنی اراج دادن متغیر (reference) در هنگام تعریف متغیر استفاده کنید و برای حذف متغیر مرجع از تابع ()unset می‌توانید استفاده کنید که متغیر را حذف می‌کند

مثال #۸ تغییر مقادیر آرایه در foreach

کپی

توجه داشته باشید که تعیرف متغیر مرجع در حلقه foreach حتی بعد از اتمام حلقه هم باقی می‌ماند بنابراین پیشناهاد می‌شود که متغیر مرجع را با تابع ()unset بعد از اتمام تغییرات حذف کنید

منبع : php.net