switch/case vs if/else

kongen

kongemedlem
Hva bruker minst ressurser av switch/case og if/else?

Når skal man bruke switch/case og når skal man bruke if/else, eller er disse akkurat det samme?

Kode:
$bolle = "fiskebolle";

switch ($bolle) {
    case "skolebolle":
        echo "skolebolle";
        break;
    case "fiskebolle":
        echo "fiskebolle";
        break;
    case "kråkebolle":
        echo "kråkebolle";
        break;
    default:
        echo "bolle";
}

Kode:
$bolle = "fiskebolle";

if ($bolle == "skolebolle") {
        echo "skolebolle";
    } elseif ($bolle == "fiskebolle") {
	    echo "fiskebolle";
    } elseif ($bolle == "kråkebolle") {
	    echo "kråkebolle";
    } else {
	    echo "bolle";
}
 

adeneo

Medlem
Ressursmessig så spiller det nok liten rolle, det vil nok ikke være noe som er merkbart før du kommer opp i hundretusenvis av muligheter.

For lesbarhet og enklest mulig å endre på ting, så er en switch/case greiere når det er snakk om flere enn to-tre valg.

Det finnes jo flere muligheter

Kode:
$result = $bolle === "skolebolle" ? "skolebolle" :
          $bolle === "fiskebolle" ? "fiskebolle" : "kråkebolle";

echo $result;

eller

Kode:
$result = array(
    "skolebolle" => "skolebolle",
    "fiskebolle" => "fiskebolle",
    "kråkebolle" => "kråkebolle"
);

echo $result[$bolle];

og så videre, ingen av de er særlig lesbare, men kan være nyttige, selv om det ser litt rart ut når verdien er lik nøkkelen, og man like gjerne kunne gjort

Kode:
echo $bolle;
 
Topp