Home > Backend Development > PHP Problem > Which one is better, PHP switch or ifelse?

Which one is better, PHP switch or ifelse?

醉折花枝作酒筹
Release: 2023-03-10 14:16:01
forward
1309 people have browsed it

This article will introduce you to switch and ifelse in PHP. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to everyone.

Which one is better, PHP switch or ifelse?

Who is faster, PHP switch or ifelse?

For multiple if condition judgments, we use switch instead of ifelse, which will make the code clearer. So what is their efficiency comparison? From the PHP manual, I found that someone had already compared it, and I also experimented with his code:

$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");
Copy after login

After looping 1000000000 times and adding operations to each judgment condition, we found the result It is switch that is more efficient and runs faster. The result on my computer is:

// if: 301sec
// switch: 255sec
Copy after login

Although switch is more efficient, there are also things that need to be paid attention to. First of all, the judgment value can only be Number, floating point number or string. Secondly, each judgment is an ordinary == judgment, that is to say, the following judgment results are not necessarily the same as yours:

$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
Copy after login

Yes, it is still a type cast during == comparison. The problem is that when comparing string and int values, they are forced to the int type. The result of the forced conversion of "2string" is exactly 2. Therefore, when using switch, you should ensure that the comparison value is consistent with the type of each case, otherwise unpredictable errors may occur.

Reference code:

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
Copy after login

Recommended learning: php video tutorial

The above is the detailed content of Which one is better, PHP switch or ifelse?. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
php
source:segmentfault.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template