Vinnaren i pepparkakshustävlingen!
2016-03-30, 09:42
  #1
Medlem
Är det inte i princip samma sak?
Kod:
<?php
$t 
date("H");

if (
$t "10") {
    echo 
"Have a good morning!";
} elseif (
$t "20") {
    echo 
"Have a good day!";
} else {
    echo 
"Have a good night!";
}
?>

Kod:
<?php
$favcolor 
"red";

switch (
$favcolor) {
    case 
"red":
        echo 
"Your favorite color is red!";
        break;
    case 
"blue":
        echo 
"Your favorite color is blue!";
        break;
    case 
"green":
        echo 
"Your favorite color is green!";
        break;
    default:
        echo 
"Your favorite color is neither red, blue, nor green!";
}
?>
Citera
2016-03-30, 10:00
  #2
Medlem
tj.s avatar
Det är som med while- kontra for-loop, man väljer det som passar lösningen bäst. Switch-case används ofta tillsammans med enums och i state machines.
Citera
2016-03-30, 10:12
  #3
Medlem
prozacstars avatar
Det är en del skillnader.

Switch:

Är mer kompakt och oftast mer läsbar än en nästad if/else.
I de flesta fall accepterar switch bara primitiva data typer som nyckel och konstanter som case.
Du kan gå igenom flera cases om du inte använder "break;".

If/else:

Tillåter komplicerade uttryck
Accepterar alla datatyper


När användes de:
If/else används när du ska ta beslut, switch används när du vill testa värdet mot ett case.
Citera
2016-03-30, 10:14
  #4
Medlem
Retsinas avatar
Som prozacstar skriver så är det viss skillnad. Det viktigaste är dock något helt annat.
Citera
2016-03-30, 12:14
  #5
Medlem
Du kan använda break i en switch.
Skulle kunna användas för att förbereda ett uförande och enkelt avbryta det om fel uppstår.
Citera
2016-03-30, 15:59
  #6
Medlem
utforskarens avatar
Har lärt mig att switch-satser är snabbare än if-satser. Låter det vara osagt huruvida det faktiskt stämmer eller ej, men det kan vara värt att ha i åtanke om du gör resurs krävande processer, där en kontroll ska utföras ett stort antal gånger i följd osv.
Citera
2016-03-30, 19:15
  #7
Medlem
tj.s avatar
Citat:
Ursprungligen postat av utforskaren
Har lärt mig att switch-satser är snabbare än if-satser. Låter det vara osagt huruvida det faktiskt stämmer eller ej, men det kan vara värt att ha i åtanke om du gör resurs krävande processer, där en kontroll ska utföras ett stort antal gånger i följd osv.
Nej, man bör aldrig försöka mikrooptimera till den graden. Om en if-sats är mer logisk att använda vid ett ställe och/eller förbättrar kodens läsbarhet, är det just en if-sats som ska användas. Att man sparar, säg, en millisekund eller två rättfärdigar inte att man gör designjusteringar efter det.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback