> Le 26 mars 2020 à 19:37, Ilija Tovilo <ilija.tov...@me.com> a écrit :
> 
> What's the reasoning behind this? I find it weird an inconsistent.
> 

This is a manifestly a leftover of an old syntax. Take a look at the PHP/FI 2 
manual:

Language constructs:
https://www.php.net/manual/phpfi2.php#lang 
<https://www.php.net/manual/phpfi2.php#lang>


```
    <?
      if($a==5 &&  $b!=0 );
        $c = 100 + $a / $b;
      endif;
    >
```

and, in particular, switch construct:
https://www.php.net/manual/phpfi2.php#switch 
<https://www.php.net/manual/phpfi2.php#switch>

```
      <?
          $a=0;
          switch($a) {
                case 1;
                  echo "a is 1";
                  break;
                case "hello";
                  echo "a is hello";
                  break;
                default;
                  echo "a is unknown";
                  break;
          }
        >
```

Note that every line of code, including `if (...);` and `case...;`, is 
consistently terminated by a semicolon.

In a subsequent major version, the syntax was modified, and you would use a 
colon instead of a semicolon in a number of places, as you can write today:

```
    <?php
      if ($a==5 &&  $b!=0):
        $c = 100 + $a / $b;
      endif;
    >
```

Although the old `if (true);` syntax has been removed (probably because of 
ambiguity or difficulty of parsing), the old `case 1;` syntax could be left 
without issue.

—Claude

Reply via email to