プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
PHP、printとechoの違い
あんま意識しないで使っている「print」と「echo」。
やっぱり何か違いはあるのですよね(--?

と気になったので調べてみました。
結果はこんな感じφ(--)

■print
 1.引数は1つ。「print "ほげ";」とか。
 2.戻り値はint(常に1が返る)。
 (3.関数のような振る舞いが出来る)

■echo
 1.引数は複数でもOK。「echo "ほげ","ほげ2";」とか。
 2.戻り値はvoid。
 (3.関数のような振る舞いが出来ない)


「同じだよー」って解説してるところもありますが
違いはありますので注意して下さいね。
結論としては、単純に文字列を出力したいだけならどっちでも良い。
意識する必要が出てくるのは「2.」の違いですかね。

例えば三項演算子を使って

    $member == true ? print "会員" : print "非会員";

はOKですが

    $member == true ? echo "会員" : echo "非会員";

はNGです。
これは三項演算子の構文が

 (条件) ? (条件が真の場合の戻り値) : (条件が偽の場合の戻り値);

だからです。
つまり

    $member == true ? echo "会員" : echo "非会員";



    $member == true ? (void) : (void);

みたいなもんだから構文的にNGってわけです。
printの方は戻り値があるから構文的にOKなのですよ。
ピンとこない(--?
じゃあ

    $member = true;
    print ($member == true ? print "会員" : print "非会員");


とかやってみて下さい。
結果は「会員1」ってなるはずでです。
これは条件が真なので「print "会員"」がまず実行されて「会員」が出力、
その戻り値の「1」が三項演算子の結果として返されて
それを更にprintしてるから「1」も出力されているのです。

単純だけど奥深いですね。

まぁ普通は三項演算子の中でprintなんてあんまやらないでしょうから
気にしなくても大して問題無いと思いますけどね。

    $member == true ? print "会員" : print "非会員";

ってやるくらいなら

    print ($member == true ? "会員" : "非会員");

ってやってちょーだいな。
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:● PHP  thema:システム開発 - genre:コンピュータ  Posted by ササキマコト 

  関連記事