PHP If/else, for, foreach, tandis que - sans accolades?

Quelque chose que voudrais vraiment savoir, mais jamais trouvé sont des raccourcis dans PHP.

Je suis actuellement en train de coder une fonction avec un foreach boucle avec juste une seule déclaration, à l'intérieur. J'ai essayé d'omettre les accolades comme vous pouvez le faire en si/d'autre structures de contrôle et il fonctionne. Pas d'erreurs.

foreach($var as $value)
    $arr[] = $value;

Maintenant, j'ai essayé de l'utiliser de la même manière, mais de mettre un if/else bloc à l'intérieur. Encore une fois, de travail et pas d'erreurs.

foreach($var as $value)
    if(1 + 1 == 2) {
        $arr[] = $value;
    };

Puis, j'ai pensé comme "pourquoi est-ce?" et omis la fermeture de point-virgule. Encore de travail. J'ai donc essayé d'utiliser les if/else sans accolades à l'intérieur de la boucle foreach et encore, encore de travail et pas d'erreurs. Mais la boucle foreach vraiment fermé/terminé maintenant?

foreach($var as $value)
    if(1 + 1 == 2)
        $arr[] = $value;

Au moins, j'ai omis la fermeture de point-virgule à nouveau et (comme prévu) une erreur d'analyse s'est produite.

Donc ma grande question est: Quand puis-je omettre les accolades et dans lequel la structure/boucle/fonction? Je sais que je peux certainement le faire dans if et else. Mais qu'en est while, for et foreach?

Et oui, je sais qu'il n'est pas sûr, intelligent, que ce soit pour le code, sans accolades et il y a des abréviations comme $condition ? true : false; et if: doSomething(); endif;, endfor; et endforeach;. Je ne veux pas apprendre à propos des abréviations, je veux juste comprendre les conditions au sujet de quand et où il est possible d'omettre les accolades.

  • Par ailleurs, il n'est pas nécessaire de mettre un point-virgule après l'accolade fermante. La syntaxe de la signification de cela est l'ajout d'une instruction vide entre eux. Cela est vrai de tous les C-comme les langues, sauf pour les déclarations de struct et class en C et C++.
  • Vous avez besoin d'apprendre la différence entre les déclarations et les expressions pour comprendre quand les curlys sont omittable. Et puis une bonne compréhension de l'expression de cohésion est nécessaire encore.