I was surprised when I run the following code in my editor:
<?php
echo "hello";
echo "world"
?>
As you can see, the code is missing a semicolon (;), but it still works!
Does anyone know how this works and why ; is {0,1} here?.
I was surprised when I run the following code in my editor:
<?php
echo "hello";
echo "world"
?>
As you can see, the code is missing a semicolon (;), but it still works!
Does anyone know how this works and why ; is {0,1} here?.
That is because the semicolon is not a symbol to terminate a statement.
It looks like that because it occurs almost always at the end of a statement.
Note the almost always... could be a hint.
Trying to get rid of the asymmetry, we can say it is always between statements!
That leads directly to the real meaning of the semicolon: it does not terminate statements - it separates statements.
Obviously, after the last statement, there is nothing to separate.
(Most languages allow a semicolon at the end of a block anyway, to prevent the related trivial errors. It can be done by discarding the semicolon, or, more explicit, by inserting a command that does nothing after the semicolon. )
Because the semicolon tells the parser that you've reached the end of that instruction. It lets it know that the next piece of text is a new instruction. However the closing tag tells it that we're at the end of all instructions, you don't need to parse anything else. Because we're not parsing anything else we don't need the end of instruction semicolon, it's implied.
Because the close tag implies a semicolon. You can read more about this in the manual under Instruction separation.
And a quote from there:
An example to prove this:
1. script with missing semicolon at the end, but with closing tag:
output:
2. script with missing semicolon at the end, but without closing tag:
output: