【PHP入門】標準出力echoとprintの違いと使い方について解説

echo-print

こんにちはフロントエンドエンジニアのまさにょんです!

今回は、PHPの標準出力の基本 echo と print の違いと使い方について解説していきます。

echoとは?

echoは、文字列を出力するPHPの標準出力の機能です。

echoで出力できるのは、スカラー型(int, string, boolean)のような基本的なデータ型のみです。

文字列として評価されない値を渡した場合、文字列に強制的に変換される機能がありますが、ArrayやObjectにはそれは適応されない模様です。

ArrayやObjectを出力表示したい場合は、json_encode()を使ってJSON文字列に変換して出力しましょう。

ちなみに後述する print との主な違いは、echo がリスト形式の引数を受け付け、戻り値を持たない点の2点です。

echo — 1 つ以上の文字列を出力する

echo(string ...$expressions): void

echo は実際には関数ではなく、言語構造です。 

echo キーワードの後に続く引数は、 コンマで区切られた(文字列として評価される)式のリストであり、括弧で括る必要はありません。

print との主な違いは、 echo がリスト形式の引数を受け付け、戻り値を持たないことです。

[ パラメータ : expressions ]

出力したいひとつ以上の文字列として評価される式。

コンマで区切ります。 文字列として評価されない値を渡した場合、文字列に強制的に変換されます。

引用元: echo – Manual – PHP
<?php

// [ echo-基本構文 ] echo(string ...$expressions): void

// Sample-Dataを5つ用意しました。
$scalar_type1 = 1;
$scalar_type2 = 'ロボ玉';
$scalar_type3 = true;
$scalar_type4 = false;
$array = ['robotama', 'ロボ玉', 'ロボ玉試作1号機'];

// 1. echoで出力できるのは、スカラー型(int, string, boolean)のような基本的なデータ型のみです。
// それぞれの出力結果は、右側に記載
echo $scalar_type1 . "\n"; // 1
echo $scalar_type2 . "\n"; // ロボ玉
echo $scalar_type3 . "\n"; // 1 
echo $scalar_type4 . "\n"; // '' (空文字)

// 2. 真偽値(true/false)は、trueなら1, falseなら''(空文字)が出力されます。
echo $scalar_type4 == '' ? 'true'. "\n" : 'false' . "\n"; // true

// 3. ArrayやObjectなどの複合型は、そのままでは出力できません。
// echo $array;
// PHP Warning:  Array to string conversion ([翻訳] PHP 警告: 配列から文字列への変換)
// => 文字列に変換しないと出力でいないよ!って注意されてます。

// 4. json_encode()を使ってJSON文字列にすれば、出力できます。
echo json_encode($array, JSON_UNESCAPED_UNICODE) . "\n";
// ["robotama","ロボ玉","ロボ玉試作1号機"]

// 5. echo は、リスト形式(「 , 」区切り)の引数を受け付ける
echo $scalar_type1 . "\n", $scalar_type2 . "\n", $scalar_type3 . "\n"; // OK
// 1ロボ玉1

printとは? echoとの違いは?

print は、文字列を出力するPHPの標準出力の機能です。

出力の結果の表示などは、echoと一緒です。

echo と print の違いは、、、

echoが リスト形式の引数を受け付け、戻り値を持たないのに対して、

print は単一の引数のみ受け付け、返り値は 必ず1 を返すことです。

print — 文字列を出力する

print(string $expression): int

printは実際には関数ではなく、 言語構造です。

引数は、print の後に文字列として評価される式を指定し、括弧で括る必要はありません。

echo との主な違いは、 print が単一の引数のみ受け付け、常に 1 を返すことです。

[ パラメータ : expressions ]

出力する文字列として評価される式。

文字列として評価できない値は、 強制的に文字列に変換されます。

引用元: print – Manual – PHP
<?php

// [ print-基本構文 ] print(string $expression): int 

$scalar_type2 = 'ロボ玉';
$array = ['robotama', 'ロボ玉', 'ロボ玉試作1号機'];

// 1. echo と出力の形式などは一緒です。
print $scalar_type2 . "\n"; // ロボ玉

// 2. print もArrayやObjectなどの複合型は、そのままでは出力できません。
// print $array; 
// PHP Warning:  Array to string conversion ([翻訳] PHP 警告: 配列から文字列への変換)
// => 文字列に変換しないと出力でいないよ!って注意されてます。

// 3. json_encode()を使ってJSON文字列にすれば、出力できます。
print json_encode($array, JSON_UNESCAPED_UNICODE) . "\n";
// ["robotama","ロボ玉","ロボ玉試作1号機"]

// 4. print は、リスト形式(「 , 」区切り)の引数を受け付けません。
// print $scalar_type1, $scalar_type2, $scalar_type3 . "\n"; // NG

// 5. print の返り値は、必ず「 1 」です。
$print_return = print 'ロボ玉'. "\n";
echo $print_return . "\n"; // 1

Twitterやってます!Follow Me!

神聖グンマー帝国の逆襲🔥

神聖グンマー帝国の科学は、世界一ぃぃぃぃぃぃ!!!!!

PHP / Laravel書籍

参考・引用

  1. echo – Manual – PHP
  2. print – Manual – PHP

最近の投稿