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

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

1405/04/04 00:08 محراب حسن زاده
آموزش کامل دستور 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;

پیشنمایش

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

آموزش ساخت اولین فایل PHP و بررسی ساختار تگ‌ها بر اساس استاندارد وب
1405/03/15 00:08

آموزش ساخت اولین فایل PHP و بررسی ساختار تگ‌ها بر اساس استاندارد وب

مطالعه بیشتر
آموزش ساخت دیتابیس و جدول برای پروژه PHP طبق استاندارد گوگل
1405/05/04 23:38

آموزش ساخت دیتابیس و جدول برای پروژه PHP طبق استاندارد گوگل

مطالعه بیشتر
آموزش ساخت یک گالری تصویر با استفاده از جاوا اسکریپت: راهنمای گام به گام
1403/08/03 16:57

آموزش ساخت یک گالری تصویر با استفاده از جاوا اسکریپت: راهنمای گام به گام

مطالعه بیشتر
مدیریت ترتیب نمایش با z-index در CSS: آموزش کامل و کاربردی
1403/08/11 21:28

مدیریت ترتیب نمایش با z-index در CSS: آموزش کامل و کاربردی

مطالعه بیشتر
آموزش آپدیت اطلاعات در دیتابیس به روش امن و استاندارد (Update Query)
1405/05/13 21:12

آموزش آپدیت اطلاعات در دیتابیس به روش امن و استاندارد (Update Query)

مطالعه بیشتر
مدیریت خطاها و استفاده از try...catch در جاوا اسکریپت: راهنمای کامل و مثال‌ها
1403/07/28 21:58

مدیریت خطاها و استفاده از try...catch در جاوا اسکریپت: راهنمای کامل و مثال‌ها

مطالعه بیشتر
آموزش جامع و اصولی جستجو در دیتابیس با PHP و MySQL (مطابق استانداردهای گوگل)
1405/05/13 21:26

آموزش جامع و اصولی جستجو در دیتابیس با PHP و MySQL (مطابق استانداردهای گوگل)

مطالعه بیشتر
آموزش لیست‌ها در CSS: طراحی و استایل‌دهی ساده برای لیست‌های HTML
1402/06/10 17:47

آموزش لیست‌ها در CSS: طراحی و استایل‌دهی ساده برای لیست‌های HTML

مطالعه بیشتر
آموزش کامل $_SERVER در PHP: راهنمای جامع متغیرهای سوپرگلوبال سرور
1405/05/01 20:04

آموزش کامل $_SERVER در PHP: راهنمای جامع متغیرهای سوپرگلوبال سرور

مطالعه بیشتر
آموزش جامع اعتبارسنجی حجم و نوع فایل آپلودی در PHP طبق استانداردهای امنیتی گوگل
1405/05/01 20:20

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

مطالعه بیشتر
بررسی کتابخانه‌های محبوب جاوا اسکریپت: آشنایی با Lodash و Moment.js - مزایا و کاربردها
1403/08/04 19:06

بررسی کتابخانه‌های محبوب جاوا اسکریپت: آشنایی با Lodash و Moment.js - مزایا و کاربردها

مطالعه بیشتر
آموزش کامل ثابت‌ها در PHP: تفاوت عمیق define و const طبق استانداردهای گوگل
1405/03/24 01:10

آموزش کامل ثابت‌ها در PHP: تفاوت عمیق define و const طبق استانداردهای گوگل

مطالعه بیشتر

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