6

私はただ興味があります。PHPでは、なぜecho関数として実装されなかったのですか?なぜPHPは私たちに教えてくれずprintf、決して教えてくれなかったのechoですか?その点に注意してください:

  • echoこれはvs.についての質問ではありませんprintf
  • echo私はそれが言語構造であることをすでに知っていました。

更新:ちなみに、?printfを使用して実装されましたecho

4

3 に答える 3

1

Echo は関数ではなく、print のように値を返しません。Print も言語構造です - 括弧は必要ありません。

手動: エコー - 値が返されません。print - 常に 1 を返します。

値を返すとシステムのパフォーマンスが低下するという事実は変わりません。

だから..今、printfは関数(出力された文字列の長さを返す)であるため、私が信じている答えは明らかです。

于 2010-08-30T09:25:43.293 に答える
0

エコーは言語構造です。関数は言語構造を使用して仕事をします。説明することは私の専門ではありませんが、Google のアクションによってこのトピックにたどり着きました。

言語構造とPHPの「組み込み」関数の違いは何ですか?

いくつかの重要な内容:

...

これが、echo や print などの言語構造を再定義できない理由の根源です。関数は言語構造のセットにマップされ、パーサーはコンパイル時にそのマッピングを変更できるのに対し、それらはパーサーに効果的にハードコードされています。ランタイムを使用して、独自の言語構造または式のセットを置き換えます。

...

于 2010-08-30T09:17:24.890 に答える
-1

勝手な推測ですが、おそらく PHP が CGI バイナリとして存在していたためでしょう。したがって、シェルスクリプトでエコーバイナリを使用できるため、シェルスクリプトの移植が容易になります。

于 2010-08-30T09:26:49.003 に答える