دوره‌ها / آموزش جامع PHP (از صفر تا استادی) / حلقه‌ها (PHP Loops)

حلقه‌ها (PHP Loops)

30 دقیقه Article

حلقه‌ها: تکرار بدونِ خستگی 🔄🎢

وظیفه‌یِ اصلی کامپیوترها انجامِ کارهایِ تکراری است. حلقه‌ها (Loops) به شما اجازه می‌دهند یک قطعه کد را تا زمانی که یک شرط برقرار است، بارها و بارها اجرا کنید.

انواعِ حلقه‌ها در PHP:

  • while: تا زمانی که شرط درست است اجرا می‌شود (تعداد تکرار نامشخص).
  • do...while: حداقل یک بار اجرا می‌شود، سپس شرط را چک می‌کند.
  • for: برایِ زمانی که دقیقاً می‌دانید چند بار باید تکرار کنید.
  • foreach: مخصوصِ پیمایشِ آرایه‌ها (پرکاربردترین در وب).

حلقه جادوییِ Foreach:

این حلقه به شما اجازه می‌دهد بدونِ درگیر شدن با ایندکس‌ها، مستقیماً به مقادیرِ آرایه دسترسی داشته باشید:

{code_block('foreach ($users as $user) {\n echo $user;\n}')}

کنترلِ حلقه‌ها (Break & Continue) 🛑⏩

  • break: کلاً از حلقه خارج می‌شود.
  • continue: تکرارِ فعلی را رها کرده و به سراغِ تکرارِ بعدی می‌رود.
حلقه بی‌نهایت (Infinite Loop): اگر شرط را طوری بنویسید که هیچ‌وقت غلط نشود، برنامه‌یِ شما تمامِ RAM سرور را مصرف کرده و کراش می‌کند. همیشه مطمئن شوید شمارنده‌یِ شما در حالِ تغییر است.

حلقه For کلاسیک:

{code_block('for ($i = 0; $i < 5; $i++) {\n echo "Number: $i
";\n}')}
پرفورمنس در آرایه‌ها: در حلقه‌یِ foreach، اگر می‌خواهید مقادیرِ آرایه‌یِ اصلی را تغییر دهید، باید از علامتِ & (Reference) قبل از متغیر استفاده کنید: foreach($arr as &$val).
<hr style="margin: 50px 0; border: 0; border-top: 1px dashed rgba(255,255,255,0.1);">

بخش تخصصی: مهندسی منطق و پرفورمنس در PHP 🐘⚙️

در سطوحِ حرفه‌ای، اجرایِ کد فقط کافی نیست؛ "چگونگیِ" اجرا و بهینه‌سازیِ آن تفاوتِ بینِ یک کدِ معمولی و یک معماریِ مقیاس‌پذیر را رقم می‌زند.

۱. بهینه‌سازیِ محاسبات با BCMath

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

۲. ساختارِ HashTable در آرایه‌ها

آرایه‌ها در PHP برخلافِ بسیاری از زبان‌ها، در واقع Ordered Hash Maps هستند. هر زمان که شما عضوی به آرایه اضافه می‌کنید، PHP یک سیستمِ Bucket و Hash را در پشتِ صحنه مدیریت می‌کند تا سرعتِ دسترسی به داده‌ها در حالتِ میانگین O(1) باقی بماند.

۳. مفهومِ Closures و کپسوله‌سازی

توابعِ بی‌نام (Anonymous) در PHP فقط برایِ کارهایِ موقت نیستند. با استفاده از کلمه کلیدی use، می‌توانید متغیرهایی را از اسکوپِ بیرونی به داخلِ تابع وارد کنید و یک Closure بسازید که پایه و اساسِ بسیاری از الگوهایِ طراحی مدرن است.

نکته طلایی: همیشه برایِ شرط‌هایِ پیچیده از Early Return استفاده کنید. به جایِ تودرتو کردنِ ifها، ابتدا حالت‌هایِ خطا را چک کرده و از تابع خارج شوید تا خواناییِ کد به حداکثر برسد.

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

چاپ اعداد ۱ تا ۵ Medium
سوال تمرین

با استفاده از یک حلقه‌یِ while، اعداد 1 تا 5 را پشت سر هم چاپ کنید.

پاسخ تمرین
PHP
<?php
$i = 1;
while ($i <= 5) {
  echo $i;
  $i++;
}
?>

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.