underlying difference between elseif vs else if
I was wondering the differnce between elseif
and else if
.
I was reading the manual which says if using the braces {}
they are treated the same but only elseif
works when not using the braces.
Also another contributer said:
Note that } elseif() { is somewhat faster than } else if() {
and he backed it up with a benchmark test.
To me it seems like elseif is the true way of saying it and say开发者_如何学JAVAing:
else if() {...}
is really the equivalent of:
else { if() {...} }
which might explain why its marginally slower.
I am used to using else if
because thats how I do it in other languages as well. I don't really think it matters which way you type it (unless you are not using braces.. but I think its always good to use braces anyways) I was just curious about the underlying details.
Am I correct?
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.
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;
?>
The "speed difference" in that comment is not statistically significant. Aside from else if:
not parsing, there's no effective difference.
Regarding the efficiency, and based on what I have been studying for a long time. There is no difference.
精彩评论