🐘 درس پنجم: حلقهها در PHP؛ اجرای تکراری دستورات بدون کدنویسی اضافه
🎯 هدف این درس: آشنایی کامل با حلقهها در PHP و یادگیری نحوه استفاده از for، while، do...while و foreach برای اجرای تکراری دستورات.
مهمان عزیز! 👋 به پنجمین درس از دوره جامع PHP خوش آمدی.
تا اینجا یاد گرفتی که چطور اطلاعات را در متغیرها ذخیره کنی، با انواع داده کار کنی، عملیات مختلف انجام بدهی و با استفاده از شرطها به برنامه اجازه بدهی بر اساس شرایط مختلف تصمیم بگیرد.
اما یک سؤال مهم وجود دارد: اگر بخواهیم یک دستور را بارها و بارها اجرا کنیم، آیا باید همان کد را چندین بار بنویسیم؟
قطعاً نه! 😄 اینجا دقیقاً جایی است که حلقهها (Loops) وارد میشوند.
💡 یک مثال ساده مهمان:
فرض کن میخواهی عبارت «سلام مهمان» را 100 بار نمایش بدهی. بدون حلقه باید دستور echo را 100 بار بنویسی، اما با یک حلقه میتوانی همین کار را با چند خط کد انجام بدهی.
🔄 حلقه چیست؟
حلقه ابزاری در برنامهنویسی است که به ما اجازه میدهد یک بخش مشخص از کد را چندین بار اجرا کنیم.
تعداد دفعات اجرای حلقه میتواند از قبل مشخص باشد یا تا زمانی ادامه پیدا کند که یک شرط خاص برقرار باشد.
📌 چهار حلقه مهم در PHP
for→ زمانی که تعداد تکرارها مشخص یا قابل محاسبه است.while→ زمانی که اجرای حلقه به یک شرط وابسته است.do...while→ زمانی که میخواهیم کد حداقل یک بار اجرا شود.foreach→ برای پیمایش آرایهها و مجموعهای از دادهها.
🔢 بخش ۱: حلقه for در PHP
حلقه for یکی از پرکاربردترین حلقهها در PHP است. زمانی که میدانیم یک عملیات تقریباً چند بار باید تکرار شود، for انتخاب بسیار مناسبی است.
ساختار کلی حلقه for شامل سه قسمت اصلی است:
- مقداردهی اولیه: مشخص میکند شمارنده از کجا شروع شود.
- شرط: مشخص میکند حلقه تا چه زمانی ادامه پیدا کند.
- افزایش یا کاهش: مقدار شمارنده را تغییر میدهد.
ساختار حلقه for
PHP
v8.2
<?php
// شمارنده از 1 شروع میشود
// تا زمانی که i کوچکتر یا مساوی 5 باشد
// در هر مرحله یک واحد به i اضافه میشود
for ($i = 1; $i <= 5; $i++) {
echo "شماره: " . $i . "<br>";
}
?>
⚠️ دقت کن مهمان:
عبارت $i++ یعنی مقدار $i را یک واحد افزایش بده. بنابراین اگر مقدار $i برابر 1 باشد، بعد از آن به 2 تبدیل میشود.
🔍 مراحل اجرای حلقه for
در مثال بالا، PHP ابتدا $i = 1 را اجرا میکند. سپس شرط $i <= 5 را بررسی میکند. اگر شرط درست باشد، دستورات داخل حلقه اجرا میشوند و سپس $i++ اجرا میشود.
این روند تا زمانی ادامه پیدا میکند که مقدار $i به 6 برسد. در این مرحله شرط دیگر درست نیست و حلقه متوقف میشود.
➕ بخش ۲: افزایش و کاهش شمارنده
در حلقهها معمولاً برای تغییر مقدار شمارنده از عملگرهای افزایش و کاهش استفاده میکنیم.
$i++→ یک واحد افزایش$i--→ یک واحد کاهش$i += 2→ دو واحد افزایش$i -= 2→ دو واحد کاهش
افزایش و کاهش شمارنده
PHP
v8.2
<?php
// افزایش یک واحدی
for ($i = 1; $i <= 5; $i++) {
echo $i . "<br>";
}
echo "<hr>";
// افزایش دو واحدی
for ($i = 0; $i <= 10; $i += 2) {
echo $i . "<br>";
}
?>
⏳ بخش ۳: حلقه while
حلقه while زمانی استفاده میشود که اجرای کد به برقرار بودن یک شرط وابسته باشد.
تا زمانی که شرط while مقدار true داشته باشد، دستورات داخل حلقه اجرا میشوند. به محض اینکه شرط false شود، حلقه متوقف خواهد شد.
حلقه while
PHP
v8.2
<?php
$counter = 1;
while ($counter <= 5) {
echo "شماره: " . $counter . "<br>";
// تغییر مقدار شمارنده برای جلوگیری از حلقه بینهایت
$counter++;
}
?>
🚨 هشدار مهم مهمان:
اگر داخل حلقه while شرایط را به شکلی تغییر ندهی که در نهایت false شود، ممکن است با حلقه بینهایت مواجه شوی و برنامه متوقف نشود.
🔁 بخش ۴: حلقه do…while
حلقه do...while شبیه while است، اما یک تفاوت بسیار مهم دارد: کد داخل حلقه حداقل یک بار اجرا میشود.
در while ابتدا شرط بررسی میشود و سپس کد اجرا میشود. اما در do...while ابتدا کد اجرا میشود و بعد شرط بررسی میشود.
حلقه do while
PHP
v8.2
<?php
$number = 10;
do {
echo "مقدار: " . $number . "<br>";
$number++;
} while ($number < 5);
?>
💡 نکته کلیدی مهمان:
اگر شرط از همان ابتدا false باشد، while ممکن است حتی یک بار هم اجرا نشود؛ اما do...while دستکم یک بار اجرا خواهد شد.
📋 بخش ۵: حلقه foreach و پیمایش آرایهها
یکی از مهمترین کاربردهای حلقهها در PHP، کار کردن با آرایههاست. برای پیمایش آرایهها معمولاً از foreach استفاده میکنیم.
حلقه foreach به ما اجازه میدهد تکتک عناصر یک آرایه را دریافت کنیم و روی آنها عملیاتی انجام دهیم.
حلقه foreach
PHP
v8.2
<?php
$courses = [
"PHP",
"JavaScript",
"HTML",
"CSS"
];
foreach ($courses as $course) {
echo "دوره: " . $course . "<br>";
}
?>
در این مثال، متغیر $course در هر بار اجرای حلقه یکی از عناصر آرایه $courses را دریافت میکند.
🔑 دریافت کلید و مقدار در foreach
اگر آرایه ما شامل کلید و مقدار باشد، میتوانیم هر دو را همزمان دریافت کنیم.
foreach با کلید و مقدار
PHP
v8.2
<?php
$student = [
"name" => "مهمان",
"age" => 28,
"course" => "PHP"
];
foreach ($student as $key => $value) {
echo $key . ": " . $value . "<br>";
}
?>
🛑 بخش ۶: دستور break
گاهی لازم است قبل از رسیدن حلقه به پایان طبیعی، آن را متوقف کنیم. برای این کار از دستور break استفاده میکنیم.
توقف حلقه با break
PHP
v8.2
<?php
for ($i = 1; $i <= 10; $i++) {
if ($i === 6) {
break;
}
echo $i . "<br>";
}
?>
💡 نکته:
وقتی PHP به دستور break میرسد، اجرای حلقه همان لحظه متوقف میشود و برنامه به دستور بعد از حلقه میرود.
⏭️ بخش ۷: دستور continue
دستور continue با break تفاوت دارد. break کل حلقه را متوقف میکند، اما continue فقط اجرای مرحله فعلی را رد میکند و حلقه به مرحله بعد میرود.
استفاده از continue
PHP
v8.2
<?php
for ($i = 1; $i <= 5; $i++) {
if ($i === 3) {
continue;
}
echo "عدد: " . $i . "<br>";
}
?>
در این مثال عدد 3 نمایش داده نمیشود، اما حلقه همچنان ادامه پیدا میکند و اعداد بعدی پردازش میشوند.
🧠 بخش ۸: حلقه تو در تو
یکی از قابلیتهای مهم PHP این است که میتوانیم یک حلقه را داخل حلقه دیگر قرار دهیم. به این ساختار حلقه تو در تو (Nested Loop) گفته میشود.
حلقههای تو در تو برای کارهایی مثل ساخت جدول، نمایش دادههای چندبعدی و پردازش ساختارهای پیچیده بسیار کاربردی هستند.
حلقههای تو در تو
PHP
v8.2
<?php
for ($i = 1; $i <= 3; $i++) {
for ($j = 1; $j <= 3; $j++) {
echo "ردیف: " . $i . " - ستون: " . $j . "<br>";
}
echo "<hr>";
}
?>
⚖️ بخش ۹: انتخاب حلقه مناسب
📊 مقایسه حلقهها
| حلقه | کاربرد | مثال |
|---|---|---|
for |
تعداد تکرار مشخص | شمردن از 1 تا 100 |
while |
تکرار بر اساس شرط | تا زمانی که کاربر وارد نشده |
do...while |
اجرای حداقل یک بار | نمایش منو و دریافت انتخاب |
foreach |
پیمایش آرایه | نمایش فهرست کاربران |
📝 پروژه عملی: نمایش فهرست کاربران
📝 پروژه: فهرست کاربران
در این پروژه قرار است یک آرایه از کاربران ایجاد کنیم و با استفاده از foreach اطلاعات هر کاربر را نمایش دهیم.
هر کاربر شامل نام، سن و شهر خواهد بود.
🔍 راهحل پروژه:
فهرست کاربران
PHP
v8.2
<?php
$users = [
[
"name" => "مهمان",
"age" => 28,
"city" => "اصفهان"
],
[
"name" => "علی",
"age" => 25,
"city" => "تهران"
],
[
"name" => "سارا",
"age" => 31,
"city" => "شیراز"
]
];
echo "<h2>👥 فهرست کاربران</h2>";
foreach ($users as $user) {
echo "<div>";
echo "<strong>نام:</strong> " . $user["name"] . "<br>";
echo "<strong>سن:</strong> " . $user["age"] . "<br>";
echo "<strong>شهر:</strong> " . $user["city"];
echo "</div><hr>";
}
?>
🧪 تمرینهای عملی
🎯 تمرین شماره ۱: اعداد ۱ تا ۲۰
برنامهای بنویس که با استفاده از حلقه for اعداد 1 تا 20 را نمایش دهد.
🎯 تمرین شماره ۲: اعداد زوج
با استفاده از یک حلقه، اعداد زوج بین 1 تا 50 را نمایش بده.
🎯 تمرین شماره ۳: مجموع اعداد
برنامهای بنویس که با استفاده از حلقه، مجموع اعداد 1 تا 100 را محاسبه کند.
🎯 تمرین شماره ۴: پیمایش آرایه
یک آرایه شامل نام 5 شهر ایجاد کن و با استفاده از foreach نام شهرها را یکییکی نمایش بده.
🎯 تمرین شماره ۵: جدول ضرب
با استفاده از دو حلقه تو در تو، جدول ضرب اعداد 1 تا 10 را ایجاد کن.
💡 نکات کلیدی این درس
- ✅ از
forزمانی استفاده کن که تعداد تکرارها مشخص باشد. - ✅ در
whileقبل از اجرای کد، شرط بررسی میشود. - ✅ در
do...whileکد حداقل یک بار اجرا میشود. - ✅ برای پیمایش آرایهها،
foreachمعمولاً انتخاب مناسبی است. - ✅ برای خروج کامل از حلقه از
breakاستفاده کن. - ✅ برای رد کردن مرحله فعلی و رفتن به مرحله بعد از
continueاستفاده کن. - ✅ همیشه مطمئن شو شرط حلقه در نهایت میتواند
falseشود تا با حلقه بینهایت مواجه نشوی. - ✅ نام مناسب برای متغیر شمارنده، خوانایی کد را بیشتر میکند.
🧩 جمعبندی درس
مهمان جان، در این درس یکی از پایهایترین ابزارهای برنامهنویسی یعنی حلقهها را یاد گرفتی.
حالا میتوانی به جای تکرار دستی یک دستور، اجرای آن را به PHP بسپاری. این موضوع در پروژههای واقعی اهمیت بسیار زیادی دارد؛ از نمایش فهرست محصولات و کاربران گرفته تا پردازش اطلاعات پایگاه داده و ساخت گزارشها.
- 🔹 ساختار و کاربرد
for - 🔹 ساختار و کاربرد
while - 🔹 تفاوت
whileوdo...while - 🔹 پیمایش آرایهها با
foreach - 🔹 استفاده از
breakبرای توقف حلقه - 🔹 استفاده از
continueبرای رد کردن یک مرحله - 🔹 ساخت حلقههای تو در تو
- 🔹 انتخاب حلقه مناسب برای مسئله
در درس بعدی وارد یکی از مهمترین مباحث PHP یعنی آرایهها میشویم و یاد میگیریم چگونه مجموعهای از اطلاعات را در ساختارهای ایندکسی، انجمنی و چندبعدی مدیریت کنیم.



