دستور Switch

در PHP ساختاری به نام switch وجود دارد که به شما اجازه می دهد که با توجه به مقدار ثابت یک متغیر چندین انتخاب داشته باشید. دستور switch معادل دستور if تو در تو است با این تفاوت که در دستور سوییچ متغیر فقط مقادیر ثابتی از اعداد، رشته ها و یا کاراکترها را قبول می کند. مقادیر ثابت مقادیری هستند که قابل تغیر نیستند. در زیر نحوه استفاده از دستور switch آمده است :

switch (testVar)
{
   case compareVal1:
       code to execute if testVar == compareVa11;
       break;
   case compareVa12:
       code to execute if testVar == compareVa12;
       break;
   .
   .
   .
   case compareVa1N:
       code to execute if testVer == compareVa1N;
       break;
   default:
       code to execute if none of the values above match the testVar;
       break;
}

ابتدا یک مقدار در متغیر سوییچ که در مثال بالا testVar است قرار می دهید.این مقدار با هر یک از عبارتهای case داخل بلوک switch مقایسه می شود. اگر مقدار متغیر با هر یک از مقادیر موجود در دستورات case برابر بود کد مربوط به آن case اجرا خواهد شد. به این نکته توجه کنید که حتی اگر تعداد خط کدهای داخل دستور case از یکی بیشتر باشد نباید از آکولاد استفاده کنیم. آخر هر دستور case با کلمه کلیدی break تشخیص داده می شود که باعث می شود برنامه از دستور switch خارج شده و دستورات بعد از آن اجرا شوند. اگر این کلمه کلیدی از قلم بیوفتد برنامه با خطا مواجه می شود. دستور switch یک بخش default دارد. این دستور در صورتی اجرا می شود که مقدار متغیر با هیچ یک از مقادیر دستورات case برابر نباشد. دستور default اختیاری است و اگر از بدنه switch حذف شود هیچ اتفاقی نمی افتد. مکان این دستور هم مهم نیست اما بر طبق تعریف آن را در پایان دستورات می نویسند. به مثالی در مورد دستور سوییچ توجه کنید :

<?php

    $number = 2;
    switch ($number)
    {
        case 1:
            echo 'One';
            break;
        case 2:
            echo 'TWo';
            break;
        case 3:
            echo 'Tree';
            break;
        default:
            break;
    }

?>
TWo

همانطور که در کد بالا مشاهده می کنید مقداری که به متغیر number اختصاص داده اید با مقادیر case مقایسه می شود و با هر کدام از آن مقادیر که برابر بود پیغام مناسب نمایش داده خواهد شد. اگر هم با هیچ کدام از مقادیر case ها برابر نبود دستور default اجرا می شود. یکی دیگر از ویژگیهای دستور switch این است که شما می توانید از دو یا چند case برای نشان داده یک مجموعه کد استفاده کنید. در مثال زیر اگر مقدار number یکی از اعداد 1، 2 و یا 3 باشد یک کد اجرا می شود. توجه کنید که case ها باید پشت سر هم نوشته شوند.

<?php

$number = 2;
switch($number)
{
    case 1:
    case 2:
    case 3:
       echo "This code is shared by three values." ;
       break;
}

?>
This code is shared by three values.