if文の波括弧を省略できる要件について


1行if文は[公式ドキュメント](https://www.php.net/manual/ja/control-
structures.if.php)のどこに掲載されていますか？

1行if文は波括弧を省略して1行で書くこともできる、と思っていたのですが、  
elseがないif文は全て波括弧を省略できる、のですか？

elseがないif文は波括弧を省略できる、だから、1行if文はelseがないから波括弧を省略できる、ということですか？




そもそも「1行if文」と言う概念は、PHP(あるいは同等のC由来の構文を採用した言語)にはありません。

あなたが「1行if文」と呼んでいるのであろう構文はあなたがリンクされたページにはっきり書かれています。

[code]

    if (式)
      文
    
[/code]

「1行if文は波括弧を省略して1行で書くこともできる、と思っていた」と言うのが間違いです。if文の条件部の後には「１つの文」を書くことができます。1行で書くかどうかにかかわらず波カッコは必須ではありません。

PHPにおいては、

[code]

    $a = "xyz";
    
[/code]

のように「式の後ろに`;`を付けたもの」も「１つの文」ですし、

[code]

    {
        $a = "xyz";
        print($a);
    }
    
[/code]

のように複数の文を波カッコで囲んだものも「１つの文」です。

したがって、複数の文の実行を同じ条件で制御したい場合には、必然的に波カッコを使わざるを得ないのですが、一つの文で良い場合には波カッコは必要としません。(読みやすさや保守性の観点から使うべきかどうかはまた別の問題で。)

* * *

したがって「elseがないif文」かどうかにかかわらず、条件付きで実行されるのが「１つの文」であれば、波カッコは必要ありません。




そもそも「1行if文」と言う概念は、PHP(あるいは同等のC由来の構文を採用した言語)にはありません。

あなたが「1行if文」と呼んでいるのであろう構文はあなたがリンクされたページにはっきり書かれています。

[code]

    if (式)
      文
    
[/code]

「1行if文は波括弧を省略して1行で書くこともできる、と思っていた」と言うのが間違いです。if文の条件部の後には「１つの文」を書くことができます。1行で書くかどうかにかかわらず波カッコは必須ではありません。

PHPにおいては、

[code]

    $a = "xyz";
    
[/code]

のように「式の後ろに`;`を付けたもの」も「１つの文」ですし、

[code]

    {
        $a = "xyz";
        print($a);
    }
    
[/code]

のように複数の文を波カッコで囲んだものも「１つの文」です。

したがって、複数の文の実行を同じ条件で制御したい場合には、必然的に波カッコを使わざるを得ないのですが、一つの文で良い場合には波カッコは必要としません。(読みやすさや保守性の観点から使うべきかどうかはまた別の問題で。)

* * *

したがって「elseがないif文」かどうかにかかわらず、条件付きで実行されるのが「１つの文」であれば、波カッコは必要ありません。

