user4679529 user4679529 - 7 months ago 9
PHP Question

Why is the semicolon optional in the last statement in php?

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?.

Answer

Because the close tag implies a semicolon. You can read more about this in the manual under Instruction separation.

And a quote from there:

As in C or Perl, PHP requires instructions to be terminated with a semicolon at the end of each statement. The closing tag of a block of PHP code automatically implies a semicolon; you do not need to have a semicolon terminating the last line of a PHP block. The closing tag for the block will include the immediately trailing newline if one is present.

An example to prove this:

1. script with missing semicolon at the end, but with closing tag:

<?php
    echo "1";
    echo "2"
          //^ semicolon missing
?>

output:

12

2. script with missing semicolon at the end, but without closing tag:

<?php
    echo "1";
    echo "2"
          //^ semicolon missing (closing tag missing)

output:

Parse error: syntax error, unexpected end of file, expecting ',' or ';' in