Heim > Backend-Entwicklung > PHP-Problem > Was ist besser, PHP-Switch oder ifelse?

Was ist besser, PHP-Switch oder ifelse?

醉折花枝作酒筹
Freigeben: 2023-03-10 14:16:01
nach vorne
1310 Leute haben es durchsucht

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.

Was ist besser, PHP-Switch oder ifelse?

Wer ist schneller, PHP-Switch oder ifelse?

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");
Nach dem Login kopieren

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
Nach dem Login kopieren

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 &#39;2string&#39;:
        echo "this is a string";
        break;
}

// this is 2
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Verwandte Etiketten:
php
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage