Dieser Artikel stellt Ihnen switch und ifelse in PHP vor. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.
Für die Beurteilung mehrerer if-Bedingungen verwenden wir switch anstelle von ifelse, was den Code klarer macht. Wie ist also der Effizienzvergleich? Aus dem PHP-Handbuch habe ich herausgefunden, dass jemand es bereits verglichen hat, und ich habe auch Experimente mit seinem Code durchgeführt:
$s = time(); for ($i = 0; $i < 1000000000; ++$i) { $x = $i % 10; if ($x == 1) { $y = $x * 1; } elseif ($x == 2) { $y = $x * 2; } elseif ($x == 3) { $y = $x * 3; } elseif ($x == 4) { $y = $x * 4; } elseif ($x == 5) { $y = $x * 5; } elseif ($x == 6) { $y = $x * 6; } elseif ($x == 7) { $y = $x * 7; } elseif ($x == 8) { $y = $x * 8; } elseif ($x == 9) { $y = $x * 9; } else { $y = $x * 10; } } print("if: " . (time() - $s) . "sec\n"); $s = time(); for ($i = 0; $i < 1000000000; ++$i) { $x = $i % 10; switch ($x) { case 1: $y = $x * 1; break; case 2: $y = $x * 2; break; case 3: $y = $x * 3; break; case 4: $y = $x * 4; break; case 5: $y = $x * 5; break; case 6: $y = $x * 6; break; case 7: $y = $x * 7; break; case 8: $y = $x * 8; break; case 9: $y = $x * 9; break; default: $y = $x * 10; } } print("switch: " . (time() - $s) . "sec\n");
Nachdem wir 1000000000 Mal eine Schleife durchlaufen und zu jeder Beurteilungsbedingung Berechnungsoperationen hinzugefügt haben, haben wir festgestellt, dass das Ergebnis die Effizienz des Schalters ist ist höher und läuft schneller.
// if: 301sec // switch: 255sec
Obwohl switch effizienter ist, gibt es auch Dinge, auf die man achten muss. Erstens kann der Beurteilungswert nur eine Zahl, eine Gleitkommazahl oder eine Zeichenfolge sein. . Zweitens ist jedes Urteil ein gewöhnliches ==-Urteil, das heißt, die folgenden Urteilsergebnisse stimmen nicht unbedingt mit Ihrem überein:
$string = "2string"; switch ($string) { case 1: echo "this is 1"; break; case 2: echo "this is 2"; break; case '2string': echo "this is a string"; break; } // this is 2
Ja, beim Vergleich von ==, string und int handelt es sich immer noch um ein Typzwangsproblem Werte, sie werden in den Typ int gezwungen. Das Ergebnis der erzwungenen Konvertierung von „2string“ ist genau 2. Daher sollten Sie bei der Verwendung von Switch darauf achten, dass der Vergleichswert mit dem jeweiligen Falltyp übereinstimmt, da sonst unvorhersehbare Fehler auftreten können.
Referenzcode:
https://github.com/zhangyue0503/dev-blog/blob/master/php/201911/source/PHP%E7%9A%84switch%E5%92%8Cifelse%E8%B0%81%E6%9B%B4%E5%BF%AB%EF%BC%9F.php
Empfohlenes Lernen: php-Video-Tutorial
Das obige ist der detaillierte Inhalt vonWas ist besser, PHP-Switch oder ifelse?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!