※ ChatGPTを利用し、要約された質問です(原文:PHPの式について)
PHPの式について
このQ&Aのポイント
PHPの式についての基本的な説明と、式が評価されたときに返り値を持つものと解釈できるかについて質問しています。
例を挙げながら、式とは評価したときに返り値を持つものであり、print関数は常に1という値を返すため式として扱えると説明しています。
しかし、echo関数は値を返さないため式として扱えず、echo (echo $hoge)という文はパースエラーになると説明しています。
かなり基本的な事柄なのですが
PHPにおいて【式】とは
http://php.net/manual/ja/language.expressions.php
の冒頭にある
>式は、PHP における最も重要な基盤石です。PHPにおいては、ほとんど全てのものは式で記述されます。最も簡単で最も正確な式の定義は、"全ての式には値がある。" です。
とありますが、つまりは式とは評価したとき返り値を持つものと解釈してもよいのでしょうか?
例をあげると
$hoge = 5; //これは式
print $hoge;//これも式
echo (print $hoge); //これも式
print (print $hoge); //これも式
echo (echo $hoge); //これは?実行するとパースエラー
なぜ一番最後の例のみパースエラーなのでしょうか?
調べてみると【print】関数・・・というよりprintという言語構文ですか
これはどうも常に1という値を返すみたですね。
つまり、本質問の冒頭で申した通り、帰り値を持つものが式とするならば
この
echo (echo $hoge);
は式ではない。
ということになりますか?
以上、ちょっと根本的すぎますが
ご教授ください。
補足
うーん。 >> (いくつかの他の言語構造と異なり) echo は関数のように動作しません。 の関数の様に動作しない点と >そのため、 関数のコンテキスト中では常に使用することができません。 という点において echo は返り値すら持たないから 本来は関数の引数には値を返す式が必要だけれども echo (echo $hoge); 賭した場合、echoも構文上は式を引数としてとるが (echo $hoge)の部分は値を返さないからパースエラーになるっていうかんじですかね・・。