Apakah perbezaan antara suis dan ifelse dalam PHP? Mana satu lebih cepat digunakan?

藏色散人
Lepaskan: 2023-04-10 17:02:01
ke hadapan
3494 orang telah melayarinya

Yang manakah lebih pantas, suis PHP atau ifelse?

Untuk pertimbangan keadaan berbilang, kami menggunakan suis dan bukannya ifelse untuk menjadikan kod lebih jelas. Daripada manual PHP, saya mendapati bahawa seseorang telah membandingkannya, dan saya juga menjalankan eksperimen dengan kodnya:

$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");
Salin selepas log masuk

Selepas menggelung 1000000000 kali dan menambah operasi pada setiap syarat penghakiman, kami Hasilnya ialah suis itu adalah lebih cekap dan berjalan lebih pantas. Hasilnya pada komputer saya ialah:

// if: 301sec
// switch: 255sec
Salin selepas log masuk

Walaupun suis lebih cekap, ada juga perkara yang perlu diberi perhatian Pertama, nilai hakim hanya boleh nombor, nombor titik terapung atau rentetan. Kedua, setiap penghakiman adalah == penghakiman biasa, iaitu, keputusan penghakiman berikut tidak semestinya sama dengan anda:

$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
Salin selepas log masuk

Ya, ia masih merupakan jenis == perbandingan masalah penukaran paksa ialah apabila membandingkan nilai rentetan dan int, mereka dipaksa kepada jenis int Hasil penukaran paksa "2 rentetan" adalah tepat 2. Oleh itu, apabila menggunakan suis, anda harus memastikan bahawa nilai perbandingan adalah konsisten dengan jenis setiap kes, jika tidak, ralat yang tidak dapat diramalkan mungkin berlaku.

参考代码: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
Salin selepas log masuk

Pembelajaran yang disyorkan: "Tutorial Video PHP"

Atas ialah kandungan terperinci Apakah perbezaan antara suis dan ifelse dalam PHP? Mana satu lebih cepat digunakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
php
sumber:segmentfault.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!