2019年7月5日金曜日

printとechoの違い

こんばんは、こうちゃんです。

今回は画面に文字を出力する式を紹介します。
<?php
echo "test";
?>

これを拡張子PHPとして保存し、サーバーにアップ
ブラウザで表示するだけで

画面には

test

と表示されます。
これだけでPHP構文のできあがりです。

なお、初回なので説明すると、
画面に文字列を表示する場合、

echo と書いた後に、表示したい内容を "" (ダブルコーテーション)で囲みます。
なお、他に、変数の内容を表示したい場合、
echo の後に直接変数を指定します。


echo $x;

これで変数$xの中身が表示されます。    
  
また、echo とほとんど同じですが、

print

こちらも画面に文字を出力する関数になります。

使い方は数パターンありますが、
以下のように、print の後ろに文字列を示すことで、画面にその文字列が出力されます。


$x = 111;
print $x;
print($x);
print "hello world";
print 'hello world';
print ("hello world" );

print "" target="_blank">http://moepapa.dtiblog.com/">PHPリファレンス";

print <<< TEST
これがヒアドキュメントという書き方で、
このように複数行にまたがって記述できます。
右上の「TEST」は任意で付けてよく、終わりにも付けます。
<<<で始まり、;で終わる間をすべて文書として画面に出力します。
間では、数字が先頭ではだめ、空白、タブも不可、コメント等も不可です。
TEST;

これらはすべてprintを用いて、画面に文字を出力します。

PHPのechoやprintで画面に文字を出力する際に、" や  $ のように、本来PHPで意味を持つ記号を文中に入れてしまうと、プログラム動作してしまい、画面には記号が出力できません。
その場合は、エスケープ処理と言って、
その出したい文字の前に\を入力することで、画面に出力できます。


これら、両者の違いですが、
文字列を表示する、という動作は、echo print ともにほとんど変わりません。

若干の違いは以下のようになります。

1.
echo()はカンマ区切りで複数の文字列を指定できるのに対し、print()はできません。
print "Hello","World"; // この構文はエラーが出ます。
echo "Hello","World"; // こっちは正しい構文です

※echo()文で括弧「()」をつけた場合、カンマ「,」区切りでの複数指定はできません。括弧「()」で括って複数指定するとエラーが出ますので注意して下さい。

2.
print()は結果を返しますが、echo()は返しません。
$output = print "Hello World"; // こっちは出力されます
$output = echo "Hello World"; // この構文はエラーが出ます

3.
結果を返さない分、わずかにecho()の方が早いようです。


似たような関数で

こちら、配列の中身を参照させる(画面に表示させる)基本的な関数、

print_r()

です。
print_r($array);

とすると、配列の格納されている変数$arrayの中身を解り易い形式で表示します。

公式のマニュアル
https://www.php.net/manual/ja/function.print-r.php
より、

コードで
<?php
$a = array ('a' => 'apple', 'b' => 'banana', 'c' => array ('x', 'y', 'z'));
print_r ($a);
?>
のように、配列を作って、print_rで指定した場合、
画面には、

Array
(
    [a] => apple
    [b] => banana
    [c] => Array
        (
            [0] => x
            [1] => y
            [2] => z
        )
)

のように表示されます。
プログラム中で格納されている配列の中身を確認したい時に重宝される関数です。
実際に完成されたシステム中でこの関数で値を表示させるケースはほとんどないため、
デバッグ目的で使われることが多いです。

こうちゃん

0 件のコメント:

コメントを投稿