web-dev-qa-db-ja.com

エコーと印刷はPHPでどのように異なりますか?

可能性のある複製:
参照:PHPの印刷とエコーの比較

PHPのこれら2つの関数の間に大きな根本的な違いはありますか?

207
zuk1

From: http://web.archive.org/web/20090221144611/http://faqts.com/knowledge_base/view.phtml/aid/1/fid/4

  1. 速度。 2つの間に違いがありますが、速度的にはどちらを使用するかは関係ありません。エコーは、本当に重要なことをしたい場合に戻り値を設定しないため、わずかに高速です。

  2. 表現。 print()は、次のことができるという点で関数のように振る舞います:$ret = print "Hello World";そして、$ret1になります。これは、エコーができないより複雑な式の一部としてprintを使用できることを意味します。 PHPマニュアルの例:

$b ? print "true" : print "false";

printは、複雑な式内で使用する場合に必要な優先順位テーブルの一部でもあります。ただし、これは優先順位リストの一番下にあります。 「、」AND、OR、およびXORのみが下位です。

  1. パラメーター)。文法は:echo expression [, expression[, expression] ... ]しかしecho ( expression, expression )は無効です。これは有効です:echo ("howdy"),("partner");同じ:echo "howdy","partner"; (この単純な例に括弧を入れても、そのような単一の用語には演算子の優先順位の問題がないため、意味がありません。)

したがって、括弧なしのエコーは複数のパラメーターを取り、連結されます。

   echo  "and a ", 1, 2, 3;   // comma-separated without parentheses
   echo ("and a 123");        // just one parameter with parentheses

print()は1つのパラメーターのみを取ることができます。

   print ("and a 123");
   print  "and a 123";
277
dl__

彼らです:

  • printは1つのパラメーターのみを取りますが、エコーは複数のパラメーターを持つことができます。
  • printは値(1)を返すため、式として使用できます。
  • エコーはわずかに高速です。
73
seanyboy

上記の回答に追加するために、printは1つのパラメーターしか取得できませんが、複数の値を連結できます。

$count = 5;

print "This is " . $count . " values in " . $count/5 . " parameter";

これは1つのパラメーターに5つの値

9
Steven

print()echoより遅いと思います。

print()は次のような状況でのみ使用します。

 echo 'Doing some stuff... ';
 foo() and print("ok.\n") or print("error: " . getError() . ".\n");
7
grilix

PHP.netマニュアルが示唆しているように、 この議論 を読んでください。

大きな違いの1つは、echoが複数のパラメーターを使用して出力できることです。例えば。:

echo 'foo', 'bar';   // Concatenates the 2 strings
print('foo', 'bar'); // Fatal error

出力ステートメントの結果を評価する場合(以下を参照)、printを使用します。そうでない場合は、echoを使用します。

$res = print('test');
var_dump($res); //bool(true)
6
Ross