dポイントプレゼントキャンペーン実施中!

① PHPのソースコードです。
-----------------------------
<?
print print "こんにちは";
?>
----------------------------
①をブラウザで見ると
---------------------------
 こんにちは1
---------------------------
と表示されます。

なぜ ブラウザでは「こんにちは1」表示されるか?の
参考書説明が以下です。
-------------------------------------------------------------------------------
この場合、「こんにちは1」と表示されます。
これは、右の「print"こんにちは"」が「こんにちは」を書き出して、しかも
返した値である「TRUE(1)」を、左の「print」が書き出しているのです。
-------------------------------------------------------------------------------
以上ですが ブラウザがソースを読み込む流れは
 「左~右へとブラウザが読む」のであれば!
参考書の
「TRUE(1)」を、左の「print」が書き出している
とありますが「左の「print」」値が「1」であれば

1こんにちは

と表示される というのが プログラムの流れからして
「理にかなっている」と思います。

なんで 
こんにちは1
と表示されなければいけないのでしょうか!?
よろしくお願いいたします。

質問者からの補足コメント

  • うれしい

    以下で納得しました。
    ------------------------------------
    「ソースコードは 左~右へと読み込まれる」

    print print "こんにちは";
    ㅤㅤよしよし、'print'(左)だな、何をprintすればいいんだ?
    ㅤㅤ右にあるものを評価してやろう。
    ㅤㅤㅤㅤよしよし、'print'(右)だな、何をprintすればいいんだ?
    ㅤㅤㅤㅤ右にあるものを評価してやろう。
    ㅤㅤㅤㅤㅤㅤよしよし、"こんにちは”だな。
    ㅤㅤㅤㅤㅤㅤこんにちはをprintへ返してやろう
    ㅤㅤㅤㅤおっ?評価した結果が返ってきた。
    ㅤㅤㅤㅤ"こんにちは"だな。出力してやろう。
    ㅤㅤㅤㅤよし、うまくいった。True(1)を返してやろう。
    ㅤㅤおっ?評価した結果が返ってきた。
    ㅤㅤ"True(1)"だな。出力してやろう
    ㅤㅤよしよし、うまくいった。True(1)を返してやろう。

      補足日時:2021/11/15 05:42
  • うれしい

    No.1回答者: siffon9 さんの ご回答~です。

    表示する値(=右のprintの返す値「TRUE(1)」)が判明するまで表示できません。

    以上ですが!
     プログラムの流れからして!
    最初に「左」の print が 「右」 print を見に行った場合 同じ関数なので
    左の print は 文字としての判断ができない!
    次に右のprint の 右側に  "こんにちは" があるので だから
     文字列と判断して 最初に 処理されて 「こんにちは」
    と表示される これを 判断1 とした場合
    次の判断に移行して、左の print は 何も判断する 内容がないので 
     自分の値である(1)を最後に返すことになり
    この場合、最後に1の「こんにちは1」と表示されます。

    以上ですが 「MySQLの専門書」の内容では
    PHPを詳しく説明なされなかった!

    No.1の回答に寄せられた補足コメントです。 補足日時:2021/11/15 06:01

A 回答 (3件)

ソースを「左から右」へ読むからといって、実行の順序が「左から右」となるとは限りません。




左のprintは、表示する値(=右のprintの返す値「TRUE(1)」)が判明するまで表示できません。
右のprintが「TRUE(1)」を返すのは、"こんにちは"を表示した後です。

従って、"こんにちは"の後に"1"が表示されます。
この回答への補足あり
    • good
    • 1
この回答へのお礼

早(朝)々ご回答くださいまして、ありがとうございました。
なるほどですね
 この場合!
 全体のプログラムを読みだ後に
ブラウザが判断し
 表示の前後が決まる。

お礼日時:2021/11/14 07:19

他の方も回答されていますが


普通のブラウザにPHPのソースコードを解釈する機能はありません。

PHPのコードを解釈してHTMLに変換しているのはWebサーバで、
ブラウザはWebサーバが出力したHTMLを表示しているだけです。
ブラウザはPHPのソースコードを読み込みません。
    • good
    • 1
この回答へのお礼

ご指摘くださいましてありがとうございます。
どうもすみません!

私が質問した内容ですが
 「・・・ブラウザがソースを読み込む流・・・」
 ではなくて 
サーハ゛がPHP のソースを読み込んでいるでしたね
納得です。

お礼日時:2021/11/15 05:35

なんか、わざわざ、絶対にやりもしないような方法論で検証してる参考書があるんですねぇ


しかもブラウザがその処理を読んでるわけではないので、説明も正確ではありませんし。

関数の内容は、呼び出された順に処理されるため、こんにちはの方が先に処理されますよ。
    • good
    • 2
この回答へのお礼

ご回答ありがとうございます。
Aンス:関数の内容
関数 と とらえれば 納得ですね^^

お礼日時:2021/11/15 05:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!