質問
可能な重複:
リファレンス:PHPの印刷とエコーの比較
PHPのこれら2つの関数の間に大きな根本的な違いはありますか?
解決
から: http:/ /web.archive.org/web/20090221144611/http://faqts.com/knowledge_base/view.phtml/aid/1/fid/40
-
速度。 2つの間に違いがありますが、速度的には どちらを使用するかは関係ありません。エコーはわずかに速い 本当に取得したい場合、戻り値を設定しないため ガチガチ。
-
式。
print()
は、次のことができるという点で関数のように動作します。$ ret = print" Hello World"
;そして、$ ret
は1
になります。つまり、その印刷 エコーができない、より複雑な式の一部として使用できます。あ PHPマニュアルの例:
$b ? print "true" : print "false";
printは、優先テーブルの一部でもあります。 複雑な式の中で使用されます。それはちょうど一番下にあります ただし、優先順位リストの。 "、"のみAND、OR、およびXORは低いです。
- パラメータ。文法は次のとおりです。
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";
他のヒント
それらは:
- printは1つのパラメーターのみを取りますが、エコーは複数のパラメーターを持つことができます。
- printは値(1)を返すため、式として使用できます。
- echoはわずかに高速です。
上記の回答に追加するには、printは1つのパラメーターしか取得できませんが、複数の値を連結できます。
$count = 5;
print "This is " . $count . " values in " . $count/5 . " parameter";
これは1つのパラメーターに5つの値があります
print()
は echo
よりも遅いと思います。
print()
は次のような状況でのみ使用します:
echo 'Doing some stuff... ';
foo() and print("ok.\n") or print("error: " . getError() . ".\n");
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)