GORAGOD.com

switch หรือ if ใช้อย่างไหนดี

ปกติแล้วในการเปรียบเทียบข้อมูล ไม่ว่าเราจะใช้ switch หรือใช้ if ในการเปรียบเทียบ ประสิทธิภาพของทั้งสองวิธีก็ไม่ค่อยแตกต่างกันมากนักครับ (switch จะเร็วกว่าเล็กน้อย) แต่หากในการเรียบเทียบข้อมูลต้องมีการเรียกใช้ฟังก์ชั่นมาก่อน หรือมาจากการคำนวณ ในกรณีเช่นนี้ switch จะทำงานได้เร็วกว่า

ในการเปรียบเทียบด้วย if ในแต่ละขั้นตอนของการเปรียบเทียบจะมีการเรียกใช้ฟังก์ชั่น some_func() ทุกครั้ง

if(some_func() == 1) {
    ...
} elseif (some_func() == 2) {
    ...
}

ในกรณีของ switch ฟังก์ชั่น some_function() จะถูกประมวลผลเพียงครั้งเดียวและนำไปเปรียบเทียบได้เลย
switch (some_func()) {
    case 1: ... break;
    case 2: ... break;
}

หากจำเป็นต้องใช้งานฟังก์ชั่น if แทนการใช้ switch (อาจเป็นเพราะเห็นว่าฟังก์ชั่น if อ่านได้ง่ายกว่า) เราอาจใช้การรับค่าจากฟังก์ชั่นก่อน แล้วถึงนำไปเปรียบเทียบก้ได้
$var = some_function();
if($var == 1) {
    ...
} elseif ($var == 2) {
    ...
}