• ベストアンサー

echoは命令なんですか? phpのechoの説

echoは命令なんですか? phpのechoの説明に 「echo」は文字列などを出力するための命令です と書いてあるんですが、echoはリファレンスには関数ではなく言語構造とかいてあります echoは言語構造であり命令なんですか? 関数も命令ですか?

  • PHP
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • 4017B
  • ベストアンサー率73% (1305/1776)
回答No.1

echo は「PHPの言語構造」ですが、関数ではありません。たまに「echoは関数~」みたいな嘘解説を乗せているweb記事がままありますが、これは間違いであり正しくありません。また echo はそれ自体が "値" を返さないので「式」ではりません。同じ様に文字列を表示する言語構造に print がありますが、こちらは文字列を表示すると同時に値を返しているので「言語構造であり式でもある」と定義されます。 歴史的には echo は print のエイリアスとして最初期に実装されていました。その後、PHPがバージョンアップを繰り返す度に、PHP本体の中により深くより速く再コーディングが繰り返された結果。現在では非常に高度に洗練された言語構造の1つとなっています。このため以前は僅かに print の方が実行速度が速いとされていましたが、現在では全く差異はありません。 しかしながら echo は引数(表示させたい文字列データ)に「リスト形式」が使用可能なため、多くのPHPコーダー達はもっぱら echo の方を多用し、print を使う事はほとんどありません。 echo '123', 'foo', 'bar'; // 正常に処理される。 print '123', 'foo', 'bar'; // エラーになる。 尚、PHPで「命令」と言う場合。単発の echo や print などの事を指すのでは無く、1行のプログラム文を丸ごと指して命令と言います。質問者がどのようなリファレンスを読んだのかは分かりませんが、少なくとも "The PHP Group" によって運営されているPHP公式のマニュアルにはその様には記述されてはいません。あくまでも「言語構造」、或いは「構文」などと記述されているはずです。 - PHP公式マニュアル: "echo" https://www.php.net/manual/ja/function.echo.php

okwaveokw
質問者

お礼

つまり命令ではないんですか?

okwaveokw
質問者

補足

私が見たのは プロゲートの問題ですね

その他の回答 (1)

  • 4017B
  • ベストアンサー率73% (1305/1776)
回答No.2

>「命令」ではない はい、少なくともPHPにおいて公式用語としての「命令」とは、前段で解説した通りの意味合いです。その他の用語などに関しては、以下の「PHP公式リファレンス」を参照してみてください。 - PHP:言語リファレンス https://www.php.net/manual/ja/langref.php P.S. 何故、この様な言い間違いという用語の齟齬が生じているのかと言うと。全てはPHPの開発元が英語圏のメンバー中心で行われて来たからです。 一般にプログラミング用語での「命令」とは、本来は英語での "statement" を意訳したモノです。英語での "statement" の意味は「述べる(述べるという行為自体を意味する)」とか「計算書」とかいう意味です。それを日本語に翻訳する際、素人にも分かりやすくするためでしょうか、本来の意味合いとはやや異なるニュアンスになる「命令」という訳語が当てられてしまい。それ以降はずっとそのままになっている感じですね。 PHP以外のC言語とかでも全く同じで、本来のオリジナルの公式仕様書には "statement" と記述されているモノを、何故か日本語訳にした際に「命令」と変換され記述されています。まあ確かに直感的には分かりやすいですが、プログラミングの勉強を進めて行く上では誤解を生じやすい訳語となってしまったため、その後に大きな禍根を残したままになっていますね…。 因みに英語での、日本語の「命令」という意味合いで使われる言葉は "order" です。まれに "command" という言い方もします。はい、もうピンと来たかもしれませんが…最初期の汎用プログラミング言語であった MS-DOS で、プログラム側からPCに対して処理作業の指示を行う際に、キーボードから打ち込んだ英単語の事を "コマンド:command" と表現していたため。この語のほぼ全てのプログラミング言語で「命令」という単語を使う習慣が出来上がったのです。 しかしながら英語圏のネイティブ感覚だと、"command" と言った場合には「行け(go)」とか「止まれ(stop)」みたいな、一言で言い切るイメージになるため。PHPやC言語みたいに複数の単語を繋ぎ合わせて一行の文章形式にして支持を出す場合には、感覚的に馴染まないというか気持ち悪く感じるのだと思います。なのでそういった高級言語では "command" では無く "statement" という言葉を使っているのだと思います。

okwaveokw
質問者

お礼

ありがとうございます

関連するQ&A

  • phpのechoは関数ではないんですか?言語構造だ

    phpのechoは関数ではないんですか?言語構造だったり、関数だったり両方書いてある記事もありました

    • ベストアンサー
    • PHP
  • echoについて

    echoの使い方について教えてください。 echo ($author!='' ? "$author. " : '') PHPのリファレンスにあるechoの内容を見ましたが、上のような使い方については見当たりませんでした。 この記述は、どのように解釈したらいいんでしょうか? またこの記述方法で実行した場合、出力結果は同じになりますか? これと似た構文でC言語にもありますか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • phpでechoというのはなんですか?

    phpでechoというのはPythonでいうprintと同じものですか? あと、echoってどういう意味ですか?printはなんとなく出力するとわかりますが なんでechoなんでしょうか?

    • ベストアンサー
    • PHP
  • "print"と"echo"の違いを教えてください

    PHPを始めた初心者なのですが、"print"と"echo"の使い道の違いがよく解りません。 調べてはみましたが、"print"は『文字列を出力する』、"echo"は『1つ以上の文字列を出力する』と書いてあり、意味が良く解りませんでした。 どなたか、ご存知でしたらご指導宜しくお願い致します。

    • 締切済み
    • PHP
  • phpで文字列を連結させるためのドットは 式ですか

    phpで文字列を連結させるためのドットは 式ですか? 言語構造ですか? なんと呼ばれるものですか? echo $a . $b;

    • ベストアンサー
    • PHP
  • PHPにおいて<? PHP ?>の外の出力内容

    PHPにおいて PHPタグ つまり <?php ?> にかこまれた外の箇所ですが<?php ?> の外は、php言語構造のechoやprintといったもので出力されたものと 同等の意味をもつとどこかで読んだ気がします。 どなたか、上記のような内容に準する記述のあるサイトをご存知ありませんか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • phpプログラムにてすぐecho出力が出ない。

    phpにて、ログ解析を解析し、解析結果をCSVに加工して出力するものを 作成しました。 ログの解析には、解析したい単語で正規表現を使用し、 抽出しています。 正規表現は一行につき、多い場合で5つ実行されます。 echoでところどころに変数を出力するようにしています。 phpの<?phpのすぐ下にも startと出力するようにechoを入れています。 ログのボリュームにもよるのですが、 サイズが大きいログの場合、 解析プログラムを実行しても、最初のうちは、ふんともすんとも しないのです。 5000行のログでは、1時間たっても、実行されず、echoの標準出力が発行されず、 100行程度の場合、数秒でechoの標準出力が出力されます。 すこし、経つと、思い出したかのように 標準出力を吐き出します。 phpのプログラムにおいて、 実行する場合に、どのようなソースチェックが行われているのでしょうか?? すこし、わかりづらい質問ですが、 詳しい方、宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • echoの区切り方(コンマ又はピリオド)?

    echoの正しい記述方法についてご質問します。 echo で出力する文字列にの間に変数を記述する場合、変数は「,」(コンマ)で区切るのでしょうか?それとも「.」(ピリオド)で区切るのでしょうか?または、「,」でも、「.」でも、どちらでも良いのでしょうか?「,」で区切る場合と「.」で区切る場合の使い分けが分かりません。 例1(「,」で区切る): <?php $var = "変数"; echo '$varは「', $var, '」です'; ?> 例2(「.」で区切る) <?php $var = "変数"; echo '$varは「' . $var. '」です'; ?> 「.」で区切った場合も上記のように行を変えればちゃんと出力されます(これって正しい記述?)。 また、上記よりもっと良い記述方法があれば、お教え下さい。 この質問の内容に関して詳細な情報が記載されているサイト等をご存知でしたら、お教え下さい。 よろしくお願いします。

    • 締切済み
    • PHP
  • PHPからFlashにXMLをそのまま渡す方法

    こんにちは PHPでXMLファイルを読み込み、それをそのままFlashに渡しFlash側でXMLをパーサしようと、このように書きました ------------------------------------------------------- (PHP) <?php $url = 'test.xml'; $h = fopen($url, "r"); $result_xml= ''; while(!feof($h)) { $result_xml.= fread($h, 4096); } fclose($h); echo "&data=$result_xml&"; ?> ------------------------------------------------------- (Flash) var xml:XML = new XML(); xml.load("work.php"); xml.onLoad = function(success:Boolean):Void { if (success) { trace(this.data); } }; ------------------------------------------------------- するとtraceの結果はundefinedでした。 PHPの出力結果が文字列型だということが原因のような気がするのですが、PHP側から文字列で出力するのではなく、XMLで出力するにはどうしたらよいでしょうか? リファレンスを探してみたのですが、なかなかそういった関数が見つかりませんでした。 よろしくお願いします。

  • echoとprintの使用について

    恥ずかしながらPHPの勉強を始めたばかりのものです。まずはPHP使いを夢見ています。今はHTMLを出力してる所です。 そこで気になったことがあります。 同じ(1つの)PHPファイルに echo と print を混ぜて使うことはあるものですか? やっぱりどっちかに統一させた方がいいんでしょうか? また、変数を使って表示させる場合が出た時は、printの方がいいんでしょうか? 最後になります。echoを使ってですが、文字と文字を繋げて使う接続詞?には、「,」と「.」をどちらも使えたんですが、echoに限ってはどっちも同じものなんでしょうか?違いはありますか? よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう