underlying difference between elseif vs else if

后端 未结 4 744
我寻月下人不归
我寻月下人不归 2020-12-17 10:39

I was wondering the differnce between elseif and else if.

I was reading the manual which says if using the braces {} they are

相关标签:
4条回答
  • 2020-12-17 10:45

    The "speed difference" in that comment is not statistically significant. Aside from else if: not parsing, there's no effective difference.

    0 讨论(0)
  • 2020-12-17 10:46

    Regarding the efficiency, and based on what I have been studying for a long time. There is no difference.

    0 讨论(0)
  • 2020-12-17 10:51

    In addition to my comment, from what I can see in the PHP source, the only speed boost is that PHP's parser has a special token for elseif, unsurprisingly known as T_ELSEIF. But I'm sure the speed boost is nothing more than a side effect of allowing elseif in the alternative syntax:

    if (cond1):
        // Do something
    elseif (cond2):
        // Do something else
    else:
        // Do something else
    endif;
    

    Similar to Python, which uses elif, else if with a space wouldn't be allowed without having to unnecessarily complicate the parser's implementation code (i.e. to act differently between seeing a colon and the if keyword). So a colon is required directly after else and if respectively, and that's how the language rule is stipulated.

    Ergo I'm pretty sure PHP just treats else if as a conditional block in a singular-statement else.

    If there are any speed differences at all, blame the parser for most of them.

    0 讨论(0)
  • 2020-12-17 10:51

    In Manual I read out(See Note):

    Note: Note that elseif and else if will only be considered exactly the same when using curly brackets as in the above example. When using a colon to define your if/elseif conditions, you must not separate else if into two words, or PHP will fail with a parse error.

    Example:

    <?php
    
    /* Incorrect Method: */
    if($a > $b):
        echo $a." is greater than ".$b;
    else if($a == $b): // Will not compile.
        echo "The above line causes a parse error.";
    endif;
    
    
    /* Correct Method: */
    if($a > $b):
        echo $a." is greater than ".$b;
    elseif($a == $b): // Note the combination of the words.
        echo $a." equals ".$b;
    else:
        echo $a." is neither greater than or equal to ".$b;
    endif;
    
    ?>
    
    0 讨论(0)
提交回复
热议问题