آموزش رایگان PHP

آموزش کامل دستور switch-case در PHP (به همراه مثال‌های کاربردی)

4م تیر 1405 محراب حسن زاده
آموزش کامل دستور switch-case در PHP (به همراه مثال‌های کاربردی)

آشنایی با دستور switch در PHP

در دنیای برنامه‌نویسی، تصمیم‌گیری اساس منطق هر برنامه است. هنگامی که می‌خواهید بر اساس مقدار یک متغیر تصمیم بگیرید، استفاده از دستور if-else اولین گزینه‌ای است که به ذهن می‌رسد. اما تصور کنید که باید یک متغیر را با ده یا بیست مقدار مختلف مقایسه کنید! نوشتن بلاک‌های تودرتو و طولانی elseif کد شما را بسیار شلوغ و ناخوانا می‌کند. اینجاست که دستور switch در PHP وارد میدان می‌شود تا کدهای شما را منظم، زیباتر و خواناتر کند.

دستور switch به عنوان یک ابزار کنترلی، مقدار یک عبارت یا متغیر را دریافت کرده و آن را با چندین حالت مختلف (Cases) مقایسه می‌کند. به محض یافتن اولین تطابق، کدهای مربوط به آن اجرا می‌شوند.

ساختار نحوی (Syntax) دستور switch

برای شروع، بیایید به ساختار کلی دستور switch در PHP نگاهی بیندازیم:


switch ($variable) {
    case "value1":
        // کدهایی که در صورت برابر بودن متغیر با مقدار اول اجرا می‌شوند
        break;
    case "value2":
        // کدهایی که در صورت برابر بودن متغیر با مقدار دوم اجرا می‌شوند
        break;
    default:
        // کدهایی که در صورت عدم تطابق با هیچ‌کدام از موارد بالا اجرا می‌شوند
}

توضیح اجزای اصلی دستور switch

  • عبارت ارزیابی (Expression): متغیر یا عبارتی که جلوی کلمه switch درون پرانتز قرار می‌گیرد و مقدار آن بررسی می‌شود.
  • کلمه کلیدی case: مقادیر احتمالی که می‌خواهیم متغیر اصلی را با آن‌ها مقایسه کنیم.
  • کلمه کلیدی break: این دستور بسیار حیاتی است! به محض اینکه یک کیس با متغیر تطابق پیدا کرد، با رسیدن به دستور break، مفسر PHP از بدنه switch خارج می‌شود. اگر break را ننویسید، PHP کدهای کیس‌های بعدی را نیز بدون توجه به صحت شرط اجرا خواهد کرد (به این رفتار Fall-through گفته می‌شود).
  • بخش default: این بخش اختیاری است و مانند آخرین else در دستورات شرطی عمل می‌کند؛ یعنی اگر هیچ‌کدام از حالت‌های بالا برقرار نبود، کدهای این بخش اجرا خواهند شد.

یک مثال واقعی و کاربردی

فرض کنید می‌خواهیم روزهای هفته را بر اساس یک عدد (از ۱ تا ۷) مشخص کنیم و پیامی متناسب با آن نمایش دهیم:


$day = 3;

switch ($day) {
    case 1:
        echo "شنبه";
        break;
    case 2:
        echo "یک‌شنبه";
        break;
    case 3:
        echo "دوشنبه";
        break;
    case 4:
        echo "سه‌شنبه";
        break;
    case 5:
        echo "چهارشنبه";
        break;
    case 6:
        echo "پنج‌شنبه";
        break;
    case 7:
        echo "جمعه";
        break;
    default:
        echo "عدد وارد شده معتبر نیست!";
}

استفاده از چندین Case برای یک عملیات مشترک

گاهی اوقات شما می‌خواهید برای چندین حالت مختلف، یک کار یکسان انجام دهید. در این حالت می‌توانید چند case را پشت سر هم بدون قرار دادن break بنویسید:


$role = "editor";

switch ($role) {
    case "admin":
    case "super_admin":
        echo "دسترسی کامل به پنل مدیریت";
        break;
    case "editor":
    case "author":
        echo "دسترسی به بخش مدیریت محتوا";
        break;
    default:
        echo "دسترسی محدود کاربری";
}

تفاوت دستور switch با if-else؛ کدام یک بهتر است؟

شاید بپرسید چه زمانی باید از if و چه زمانی از switch استفاده کنیم؟

  • مقایسه شرطی پیشرفته: اگر شروط شما پیچیده هستند، مانند بررسی بزرگتر یا کوچکتر بودن ($x > 10) یا استفاده از عملگرهای منطقی ترکیبی (&& و ||)، قطعا باید از if-else استفاده کنید. دستور switch فقط مقایسه تساوی ساده (Loose Comparison - مانند ==) را انجام می‌دهد.
  • خوانایی کد: اگر قصد دارید یک متغیر مشخص را با مقادیر ثابت مختلف مقایسه کنید، دستور switch کد شما را بسیار تمیزتر، مرتب‌تر و خواناتر می‌کند.
  • سرعت اجرا: در مواردی که تعداد حالت‌ها زیاد است، دستور switch در کامپایلرهای PHP به دلیل استفاده از جدول پرش (Jump Table) نسبت به if-elseهای طولانی سرعت اجرای بهتری دارد.

یک نکته مدرن: عبارت Match در PHP 8

اگر از PHP 8 یا نسخه‌های بالاتر استفاده می‌کنید، یک جایگزین بسیار قدرتمند و کوتاه‌تر به نام Match expression معرفی شده است که بر خلاف switch، به جای مقایسه ضعیف (==)، از مقایسه سخت‌گیرانه (===) استفاده می‌کند و نیاز به کلمه کلیدی break نیز ندارد:


$status = 200;

$message = match ($status) {
    200 => 'عملیات موفقیت‌آمیز بود',
    404 => 'صفحه پیدا نشد',
    500 => 'خطای سرور',
    default => 'خطای ناشناخته'
};

echo $message;

پیشنمایش

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

آموزش رویدادهای پیشرفته در جاوا اسکریپت: بابلینگ، کپچرینگ و توقف پیش‌فرض - راهنمای جامع
2م آبان 1403

آموزش رویدادهای پیشرفته در جاوا اسکریپت: بابلینگ، کپچرینگ و توقف پیش‌فرض - راهنمای جامع

مطالعه بیشتر
تفاوت Data و Computed Properties در Vue.js | آموزش کاربردی و مثال‌محور
21م آذر 1404

تفاوت Data و Computed Properties در Vue.js | آموزش کاربردی و مثال‌محور

مطالعه بیشتر
آموزش اصول Web APIs و نحوه استفاده از آن‌ها در جاوا اسکریپت: راهنمای کامل با مثال‌ها
1م آبان 1403

آموزش اصول Web APIs و نحوه استفاده از آن‌ها در جاوا اسکریپت: راهنمای کامل با مثال‌ها

مطالعه بیشتر
آموزش استفاده از cubic-bezier در CSS برای انیمیشن‌های سفارشی و حرفه‌ای
12م آبان 1403

آموزش استفاده از cubic-bezier در CSS برای انیمیشن‌های سفارشی و حرفه‌ای

مطالعه بیشتر
کار با border و تنظیمات آن در CSS: مدیریت زوایای گرد با border-radius
9م آبان 1403

کار با border و تنظیمات آن در CSS: مدیریت زوایای گرد با border-radius

مطالعه بیشتر
استفاده از Flexbox در CSS برای چیدمان‌های مدرن: راهنمای جامع و کاربردی
10م آبان 1403

استفاده از Flexbox در CSS برای چیدمان‌های مدرن: راهنمای جامع و کاربردی

مطالعه بیشتر
مقدمه‌ای به template و دیتابایندینگ در Vue.js: نحوه مدیریت داده‌ها و رندرینگ پویا
28م شهریور 1402

مقدمه‌ای به template و دیتابایندینگ در Vue.js: نحوه مدیریت داده‌ها و رندرینگ پویا

مطالعه بیشتر
آموزش ایجاد و حذف المان‌های DOM به صورت داینامیک با جاوا اسکریپت: راهنمای جامع و کاربردی
2م آبان 1403

آموزش ایجاد و حذف المان‌های DOM به صورت داینامیک با جاوا اسکریپت: راهنمای جامع و کاربردی

مطالعه بیشتر
آموزش استفاده از position در CSS: نحوه موقعیت‌دهی عناصر در صفحات وب
9م آبان 1403

آموزش استفاده از position در CSS: نحوه موقعیت‌دهی عناصر در صفحات وب

مطالعه بیشتر
آموزش جامع انواع داده‌ها در PHP (بخش اول: String, Integer, Float, Boolean)
24م خرداد 1405

آموزش جامع انواع داده‌ها در PHP (بخش اول: String, Integer, Float, Boolean)

مطالعه بیشتر
آموزش استفاده از تگ‌های خاص HTML: تگ‌های کاربردی برای طراحی وب‌سایت
22م مرداد 1402

آموزش استفاده از تگ‌های خاص HTML: تگ‌های کاربردی برای طراحی وب‌سایت

مطالعه بیشتر
آموزش ایجاد Transitions و انیمیشن‌های صفحه بارگذاری (Loader) در CSS: طراحی لودرهای جذاب
16م آبان 1403

آموزش ایجاد Transitions و انیمیشن‌های صفحه بارگذاری (Loader) در CSS: طراحی لودرهای جذاب

مطالعه بیشتر

تمامی حقوق معتلق به ناشر سایت است و کپی از آن پیگرد قانونی دارد