آموزش رایگان 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;

پیشنمایش

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

آموزش CSS Blend Modes: ادغام رنگ‌ها و تصاویر برای طراحی وب جذاب
18م شهریور 1402

آموزش CSS Blend Modes: ادغام رنگ‌ها و تصاویر برای طراحی وب جذاب

مطالعه بیشتر
آشنایی با Inheritance در CSS: اصول وراثت و مدیریت استایل‌ها
12م آبان 1403

آشنایی با Inheritance در CSS: اصول وراثت و مدیریت استایل‌ها

مطالعه بیشتر
راهنمای جامع قوانین نام‌گذاری متغیرها در PHP بر اساس استاندارد گوگل
24م خرداد 1405

راهنمای جامع قوانین نام‌گذاری متغیرها در PHP بر اساس استاندارد گوگل

مطالعه بیشتر
مدیریت رویدادها در جاوا اسکریپت: اضافه و حذف Event Listeners - آموزش جامع با مثال‌ها
2م آبان 1403

مدیریت رویدادها در جاوا اسکریپت: اضافه و حذف Event Listeners - آموزش جامع با مثال‌ها

مطالعه بیشتر
استفاده از CSS Scoped و استایل‌دهی به کامپوننت‌ها در Vue.js | آموزش کاربردی
23م آذر 1404

استفاده از CSS Scoped و استایل‌دهی به کامپوننت‌ها در Vue.js | آموزش کاربردی

مطالعه بیشتر
آموزش Emit در Vue.js | انتقال رویداد از کامپوننت فرزند به والد
28م آذر 1404

آموزش Emit در Vue.js | انتقال رویداد از کامپوننت فرزند به والد

مطالعه بیشتر
آموزش کامل دستورات شرطی در PHP: راهنمای جامع if، else و elseif
4م تیر 1405

آموزش کامل دستورات شرطی در PHP: راهنمای جامع if، else و elseif

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

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

مطالعه بیشتر
آموزش جامع و استاندارد کار با آرایه‌ها در PHP (راهنمای گوگل)
24م خرداد 1405

آموزش جامع و استاندارد کار با آرایه‌ها در PHP (راهنمای گوگل)

مطالعه بیشتر
کار با تصاویر SVG در CSS: کنترل استایل و استفاده از گرافیک‌های مقیاس‌پذیر
16م آبان 1403

کار با تصاویر SVG در CSS: کنترل استایل و استفاده از گرافیک‌های مقیاس‌پذیر

مطالعه بیشتر
آموزش اصول طراحی الگوهای برنامه‌نویسی (Design Patterns) در جاوا اسکریپت: راهنمای جامع با مثال‌ها
4م آبان 1403

آموزش اصول طراحی الگوهای برنامه‌نویسی (Design Patterns) در جاوا اسکریپت: راهنمای جامع با مثال‌ها

مطالعه بیشتر
آموزش استفاده از object-fit و object-position در CSS: تنظیم و قرارگیری تصاویر به‌صورت دقیق
12م آبان 1403

آموزش استفاده از object-fit و object-position در CSS: تنظیم و قرارگیری تصاویر به‌صورت دقیق

مطالعه بیشتر

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