match بدرد بخور نیست و برخلاف switch case که میشه به ازای هر case تعداد زیادی دستور اجرا کنیم در match فقط میشه تعدادی دستور محدود رو اجرا کرد، ولی خب چنین چیزی صحت نداره.بریم با هم دیگه بررسیش بکنیم:
گفتیم که در
switch case به ازای هر case دستورات زیادی میشه اجرا کرد، مثال :switch (1){
case 1:
$a = 10;
$b = 20;
$c = 30;
echo 'hello';
echo 'bye';
return null;
}
در مثال بالا 6 عمل تنها در یک case اجرا میشه، ولی داخل match به این صورت نمی تونیم دستورات رو پشت سر هم بنویسیم.ولی حل این مشکل راه های زیادی داره و میریم که چند تا راهش رو ببینیم:
راه حل اول : داخل
index های match یک anonymous functions پاس میدیم و کار هایی که میخوایم بکنیم رو داخلش می نویسیم و سپس match رو داخل یک متغییر میریزیم و متغییر رو به عنوان تابع صدا می زنیم:$do = match (1){
1=> function (){
echo 'hello';
echo 'bye';
return null;
}
};
$do();
راه حل دوم anonymous functions رو داخل match صدا میزنیم:match (1){
1=> (function (){
echo 'hello ';
})()
};
راه حل سوم یک تابع تعریف می کنیم و کار هایی که می خوایم بکنیم رو داخلش می نویسیم و تابع رو داخل match صدا میزنیم:function test(){
echo 'hello ';
}
$do = match (1){
1=> test()
};
راه حل های بیشتری میتونه وجود داشته باشه و یک برنامه نویس خوب بهترین راه و کوتاه ترین راه رو پیدا می کنه.در کل اومدن
match داخل php دلیل بر این نیست که نباید از switch case استفاده کنیم، شما هستید که تصمیم می گیرید در چه موقعی از کدومشون استفاده کنید.مطالب بیشتر رو از دو رفرنس زیر میتونید دنبال کنید:
داکیومنت php
تفاوت های switch case و match
.