مقدمه و معرفی :
سلامی مجدد خدمت شما دوستداران زبان برنامه نویسی PHP من علیرضا حاتمی نیا هستم و در خدمت شما هستم با آموزشی دیگر از سری آموزش های برنامه نویسی در جلسه گذشته با دستورات شرطی if و else در php آشنا شدید و در این جلسه با دستور سوییچ switch که از خیلی جهات شبیه دستورات شرطی if , else می باشد آشنا می شوید.
دستور switch در php :
کلمه switch به معنی عوض کردن یا تعویض کردن می باشد. یک ساختار if و else را تصور کنید که به علت وچود شرطهای زیاد مجبور به استفاده از elseif های تودرتو می باشید. دستور switch برای انتخاب یک عضو از مجموعه ای بزرگ با استفاده از شرطی خاص (case) به وجود آمده است. مانند انتخاب یک روز از هفته در صورت تعطیلی رسمی در آن روز. یا انتخاب یک کتاب از یک کتابخانه در صورت برقرار شرطی خاص. همین طور دستور switch دارای دستوری به نام Default است که در صورت برقرار نبودن شرط های هر case، شرط داخل default اجرا می شود.
به دستور ساده if و else زیر دقت کنید :
فرض کنید می خواهیم نام اعداد 1 تا 5 را به انگلیسی چاپ کنیم و در صورتی که عدد غیر از این اعداد بود پیام error چاپ می شود.
<?php if ($i == 0) { echo "ziro"; } elseif ($i == 1) { echo "one"; } elseif($i == 2) { echo "two"; } elseif($i == 3) { echo "three"; } elseif($i == 4) { echo "four"; } elseif($i == 5) { echo "five"; } else { echo "error"; } ?>
توجه کنید که دستور elseif چهار بار تکرار شده است. در چنین مواقعی بهتر است از دستور switch استفاده کنیم زیرا از سرعت پردازش بهتری برخوردار است و ساختاری اصولی تر نیز دارد.
ساختار دستور swich به شرح زیر است:
switch (n) { case label1: code to be executed if n=label1; break; case label2: code to be executed if n=label2; break; case label3: code to be executed if n=label3; break; ... default: code to be executed if n is different from all labels; }
دستور switch چگونه کار می کند :
ابتدا یک متغیر ساده مانند n را برای بررسی به switch می دهیم. سپس توسط دستور case مقدار را با n مقایسه می کنیم. اگر n با مقدار مربوطه برابر بود دستورات جلوی آن اجرا می شود و سپس توسط break از switch خلرج می شود. اگر هیچ کدام از شرط ها برقرار نبود دستورات بعد از default اجرا خواهند شد.
مثال ذکر شده توسط دستور switch به شکل زیر می شود :
switch ($i) { case 0: echo "zero"; break; case 1: echo "one"; break; case 2: echo "two"; break; case 3: echo "three"; break; case 4: echo "four"; break; case 5: echo "five"; break; default: echo "error"; }
نکته: اگر از دستور break بعد از case استفاده نشود بین شرط ها از OR استفاده می شود و تا اولین break ادامه خواهد داشت.
<?php switch ($i) { case 0: echo "i equals 0"; case 1: echo "i equals 1"; case 2: echo "i equals 2"; } ?>