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

پیشنمایش

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

عملگرها و عبارات محاسباتی در جاوا اسکریپت: نحوه استفاده و کاربردهای مختلف
1402/06/28 00:20

عملگرها و عبارات محاسباتی در جاوا اسکریپت: نحوه استفاده و کاربردهای مختلف

مطالعه بیشتر
مفاهیم پیشرفته در کلاس‌ها و وراثت (Super, Extends) در جاوا اسکریپت: راهنمای کامل و مثال‌ها
1403/07/29 20:25

مفاهیم پیشرفته در کلاس‌ها و وراثت (Super, Extends) در جاوا اسکریپت: راهنمای کامل و مثال‌ها

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

راهنمای جامع جلوگیری از SQL Injection در PHP (طبق استانداردهای گوگل)

مطالعه بیشتر
معرفی Vue.js و ویژگی‌های کلیدی آن: فریمورک مدرن برای توسعه وب تعاملی
1402/06/28 00:33

معرفی Vue.js و ویژگی‌های کلیدی آن: فریمورک مدرن برای توسعه وب تعاملی

مطالعه بیشتر
راهنمای کامل جداول HTML: آموزش ساخت و بهینه‌سازی سئو
1402/05/21 23:26

راهنمای کامل جداول HTML: آموزش ساخت و بهینه‌سازی سئو

مطالعه بیشتر
آموزش Prepared Statement در PHP: امن‌سازی دیتابیس در برابر SQL Injection
1405/05/13 21:17

آموزش Prepared Statement در PHP: امن‌سازی دیتابیس در برابر SQL Injection

مطالعه بیشتر
آموزش اصولی Insert اطلاعات در دیتابیس طبق استانداردهای گوگل
1405/05/13 20:58

آموزش اصولی Insert اطلاعات در دیتابیس طبق استانداردهای گوگل

مطالعه بیشتر
آموزش اصول استاندارد حذف (Delete) اطلاعات از دیتابیس طبق متدهای گوگل
1405/05/13 21:13

آموزش اصول استاندارد حذف (Delete) اطلاعات از دیتابیس طبق متدهای گوگل

مطالعه بیشتر
آموزش گام به گام ساخت سیستم لاگین و لاگ‌اوت در PHP به صورت ایمن
1405/05/14 22:13

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

مطالعه بیشتر
آموزش استفاده از ماژول‌ها (Modules) در جاوا اسکریپت: آشنایی با ES6 Modules - راهنمای کامل
1403/08/05 20:24

آموزش استفاده از ماژول‌ها (Modules) در جاوا اسکریپت: آشنایی با ES6 Modules - راهنمای کامل

مطالعه بیشتر
آموزش CSS Transform و Transition: تبدیل‌ها و ایجاد تغییرات ظاهری پویا
1402/06/10 18:32

آموزش CSS Transform و Transition: تبدیل‌ها و ایجاد تغییرات ظاهری پویا

مطالعه بیشتر
آموزش فیلتر کردن داده‌ها در PHP با توابع filter_var و preg_match
1405/05/13 21:29

آموزش فیلتر کردن داده‌ها در PHP با توابع filter_var و preg_match

مطالعه بیشتر

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