دستور Switch در PHP یکی از دستورات کنترلی است که برای انجام انتخابهای متعدد بر اساس مقادیر مختلف یک متغیر استفاده میشود. این دستور به جای استفاده از چندین دستور if-else ، یک راه سادهتر و خواناتر برای مقایسه یک متغیر با چندین گزینه فراهم میآورد. در این دستور، مقایسه مقادیر به صورت منظم انجام میشود و در صورتی که مقدار متغیر با یکی از مقادیر مشخص شده در هر گزینه تطابق داشته باشد، بخش مربوطه از کد اجرا میشود.
مقدمه
دستور Switch در PHP معمولاً زمانی مفید است که بخواهیم تصمیمات مختلفی را بر اساس مقدار یک متغیر انتخاب کنیم، بهخصوص زمانی که تعداد این گزینهها زیاد باشد. این ساختار کد را تمیزتر و پایدارتر میکند، چون به جای استفاده از چندین دستور if که ممکن است خوانایی کد را کاهش دهد، میتوان از یک بلوک واحد برای پردازش موارد مختلف استفاده کرد. در این آموزش، با دستور Switch در PHP آشنا میشوید که با مقایسه یک عبارت با مقادیر مختلف، یک بلوک کد را اجرا میکند.
دستور switch در PHP
زمانی که مقدار یک متغیر مشخصکنندهی چندین انتخاب مختلف باشد، میتوانید از دستور if elseif استفاده کنید.
فرض کنید که در حال ساخت وبسایتی هستید که کاربران آن نقشهای مختلفی مانند مدیر «admin»، ویرایشگر «editor»، نویسنده «author» و مشترک «subscriber» دارند.
مثال زیر از دستور if elseif استفاده میکند تا بر اساس نقش کاربر، پیام متفاوتی نمایش دهد:
<?php $role = 'subscriber'; $message = ''; if ('admin' === $role) { $message = 'Welcome, admin!'; } elseif ('editor' === $role) { $message = 'Welcome! You have some pending articles to edit'; } elseif ('author' === $role) { $message = 'Welcome! Do you want to publish the draft article?'; } elseif ('subscriber' === $role) { $message = 'Welcome! Check out some new articles.'; } else { $message = 'Sorry! You are not authorized to access this page'; } echo $message;
خروجی:
Welcome! Check out some new articles.
وقتی مقدار یک متغیر مشخصکنندهی چندین انتخاب مختلف باشد، استفاده از دستور switch کد را خواناتر و مرتبتر میکند، به این شکل:
<?php $role = 'admin'; $message = ''; switch ($role) { case 'admin': $message = 'Welcome, admin!'; break; case 'editor': $message = 'Welcome! You have some pending articles to edit'; break; case 'author': $message = 'Welcome! Do you want to publish the draft article?'; break; case 'subscriber': $message = 'Welcome! Check out some new articles.'; break; default: $message = 'You are not authorized to access this page'; } echo $message;
ساختار دستور switch به شکل زیر است:
<?php switch (expression) { case value1: // code block 1 break; case value2: // code block 2 break; case value3: // code block 3 break; default: // default code block }
دستور switch مقدار یک عبارت را با مقادیر موجود در هر case مقایسه میکند.
- اگر مقدار عبارت با مقدار یکی از case ها (مثلاً مقدار۱) برابر باشد، PHP بلوک کد مربوط به آن را اجرا میکند تا به اولین دستور break برسد.
- اگر هیچ مقداری مطابقت نداشته باشد و پیشفرض تعریف شده باشد، PHP تمامی دستورات پس از پیشفرض را اجرا میکند.
- در صورتی که پیشفرض تعریف نشده باشد و هیچ مقداری مطابقت نداشته باشد، کنترل برنامه به دستور بعد از switch منتقل میشود.
نمودار زیر نشان میدهد که دستور switch چگونه کار میکند:
ترکیب موارد در php
از آنجایی که PHP دستور switch را از برچسب case مطابقتیافته تا رسیدن به دستور break اجرا میکند، میتوانید چندین case را در یک بلوک ترکیب کنید.
مثال زیر از دستور switch استفاده میکند و موارد editor و author را با هم ترکیب میکند:
<?php $message = ''; $role = 'author'; switch ($role) { case 'admin': $message = 'Welcome, admin!'; break; case 'editor': case 'author': $message = 'Welcome! Do you want to create a new article?'; break; case 'subscriber': $message = 'Welcome! Check out some new articles.'; break; default: $message = 'You are not authorized to access this page'; } echo $message;
خروجی:
Welcome! Do you want to create a new article?
در این مثال، اگر نقش کاربر editor یا author باشد، همان پیام نمایش داده میشود.
ساختار جایگزین دستور switch در PHP
PHP همچنین یک ساختار جایگزین برای دستور switch به شکل زیر پشتیبانی میکند:
<?php switch (expression): case value1: // code block 1 break; case value2: // code block 2 break; default: // default code block break; endswitch;
ساختار جایگزین برای ترکیب با کد HTML مناسب است.
نتیجه گیری
دستور switch در PHP ابزاری کارآمد و موثر برای مدیریت انتخابهای متعدد در کد است. این دستور با سادهسازی ساختار کد و کاهش نیاز به استفاده از چندین دستور if-else، به برنامهنویسان این امکان را میدهد که کدهای خود را خواناتر و سازمانیافتهتر بنویسند. استفاده از switch زمانی که تعداد گزینهها زیاد است یا مقایسهها ساده و واضح هستند، بسیار مناسب است و میتواند به بهبود عملکرد و نگهداری کد کمک کند.