دستور Switch در PHP

 دستور Switch ، تساوی بین یک عدد صحیح، اعشاری یا رشته و یک سری برچسب Case را کنترل می کند و مقدار مورد نظر را با هر کدام از Case ها که تطبیق داشته باشد، دستورات آن برچسب را اجرا خواهد کرد.

دستورات if را می توان با switch پیاده سازی کرد.

ابتدا ساختار یک دستور switch را بررسی می کنیم:

 

switch($x) {
    case 1:
        echo "x = 1";
        break;
    case 2:
        echo "x = 2";
        break;
    default:
        echo "other number";
        break;
}

 

دستور switch یک پارامتر ورودی دارد. در واقع $x شرط مورد نظر می باشد. Case های موجود در بدنه دستور switch ، شرایط پارامتر $x را بررسی می کنند. در صورتی که هر شرط برقرار باشد، دستورات مربوط به آن Case اجرا می شود و بقیه شرایط نادیده گرفته خواهند شد.

دستور break در هر Case باید در آخر دستورات گذاشته شود زیرا در صورت نبودن break ، بقیه Case ها نیز بررسی خواهند شد. این امکان جود دارد که شرط موجود در Case های دیگر نیز برقرار باشد و دستورات چند Case اجرا شود. کد زیر را بررسی کنید:

 

$x = 10;
switch($x) {
    case $x > 1:
        echo "x > 1";
        break;
    case $x < 10:
        echo "x < 10";
        break;
    default:
        echo "print from default";
        break;
}

 

در کد بالا x هم از 1 بزرگتر و هم از 10 کوچکتر است؛ بنابراین دستورات موجود در هر دو Case اجرا می شود. همچنین دستورات default نیز اجرا خواهد شد. این اتفاق زمانی می افتد که از دستور break  در بدنه Case استفاده نکرده ایم. این حالت در مواقعی کارآمد است که چندین Case را به یک شکل مورد ارزیابی هم زمان قرار دهیم.

نکته ای در رابطه با دستورdefault : دستور default برای مواقعی در نظر گرفته می شود که هیچکدام از Case ها اجرا نشوند. در واقع نقش else آخر در دستور ifelse را دارد. می توان از default در switch به صورت اختیاری استفاده کرد. همانطور که در دستور ifelse می توانید else آخری را استفاده نکنید.

 

شاید مفید باشد: دستور if در PHP

 

نکته مهم در دستور switch که باید به آن دقت کرد، این است که بعد از هر Case به جای آکولاد باز و بسته از : استفاده می شود.

همانطور که در آموزش های قبل اشاره کردیم برای ساختار دستورهای PHP ، ساختار جایگزین وجود دارد. در این ساختار ها از آکولاد استفاده نمی شود و تفاوتی با ساختار های دارای آکولاد ندارد. در بعضی مواقع کدهای PHP با HTML ترکیب می شوند و برای بالا رفتن خوانایی کد می توان از ساختار های جایگزین استفاده کرد. کد زیر دستور switch با ساختار معمولی را نشان می دهد.

 

switch($x) {
    case 1:
        echo "x = 1";
        break;
    case 2:
        echo "x = 2";
        break;
    default:
        echo "other number";
        break;
}

 

کد زیر ساختار دستوری جایگزین را نشان می دهد. دستور switch() با : شروع می شود و برای پایان از endswitch استفاده خواهد شد.

 

switch($x):
    case 1:
        echo "x = 1";
        break;
    case 2:
        echo "x = 2";
        break;
    default:
        echo "other number";
        break;
endswitch;

 

با توجه به اینکه در ساختار دستوری جایگزین if و switch ، راحت تر می توان نقطه پایان دستورات را مشاهده کرد، در اغلب موارد و وقتی قرار است دستورات شرطی طولانی نوشته شوند, این ساختار ترجیح داده می شود.

 

منبع: it3du.ir