PHPの文字列出力は「print」ではなくて「echo」でいいじゃないか説

テックとハック

はじめに

文字列を出力するのって、echoがいいの?printがいいの?

結論としてはechoが一般的なようです。

理由としては、一番動作が軽いということですね。

以下、echoとprintの共通点と相違点を少しまとめてみました。

PHPコード

<?php
$text = 'テキスト';

//echoとprintはほぼ同じ、どちらも変数展開できます。
echo "1、echoで{$text}出力<br>";
print "2、printで{$text}出力<br>";

//違いとしては、printは変数に返り値を代入できます。
$dummy = print '3、$dummy = print:';

echo "dummyに「{$dummy}」が代入されました。<br>";

//if文を使えば、正常に動作したかどうかで分岐できます。
if($dummy2 = print '4、if($dummy2 = print "ーー"):'){
    echo 'テキストを出力してから、その後の処理を行います。<br>';
}
else{
    echo '正常に代入されませんでした。<br>';
}
?>

出力結果

1、echoでテキスト出力
2、printでテキスト出力
3、$dummy = print:dummyに「1」が代入されました。
4、if($dummy2 = print “ーー”):テキストを出力してから、その後の処理を行います。

解説しよう。

echoとprintはほぼ同じ動き

コードの中にもコメントアウトで書きましたが、
「echoとprintはほぼ同じ、どちらも変数展開できます」。

「変数展開ってなに?」というかた、これ超便利ですので、後ほど解説しますね。

print文は変数に代入できる。

できます。

$dummy = print '3、$dummy = print:';

こんな感じですね。

「なんのために?」という意見もありますが、できるもんはできます。

【応用】if文(条件分岐)との合わせ技。

先ほどの変数代入の応用です。

$dummyという変数に「1」(true)が代入されます。

PHPだけではないですが、よく使う概念として、真偽を表す「true」と「false」があります。PHPの場合、「true」は「1」として表され、「false」は「””」(値なし)として表されます。

ということで、if文の条件の部分にprint文を入れ込んであげると、下の順序でプログラムが作動します。

  1. print文によって文字列が出力される
  2. 文字列出力が正常に行われたので返り値として「1」が返される
  3. if文の条件が成立する
  4. {}内の処理が行われる

まあ、print文は複雑な動作をするわけではないので、あまり使う場面はないかもしれませんが、if文と返り値のtrueかfalseの値を使ってチェックしながら進め書き方は、色々な場面で使うことになります。

まとめ

echoとprintはほぼ同じ動きをします。

ただ、printの方が少し機能が多いです。

そのため、echoの方が余計なことをしないぶん、処理時間が短いということなんですね。

PHPの勉強はこの本が便利!

[itemlink post_id=”3929″]

コメント

タイトルとURLをコピーしました