echo

(PHP 4, PHP 5, PHP 7)

echo1 つ以上の文字列を出力する

説明

void echo ( string $arg1 [, string $... ] )

すべてのパラメータを出力します。末尾に改行を付加することはありません。

echo は実際には関数ではありません (言語構造です)。このため、使用する際に括弧は必要ありません。 (いくつかの他の言語構造と異なり) echo は関数のように動作しません。そのため、 関数のコンテキスト中では常に使用することができません。 加えて、複数のパラメータを指定して echo をコールしたい場合、括弧の中にパラメータを記述してはいけません。

echo には、開始タグの直後に等号を付ける短縮構文もあります。 この短縮構文は、PHP 5.4.0 より前のバージョンでは設定オプションshort_open_tag が有効な場合しか使えません。

I have <?=$foo?> foo.

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

パラメータ

arg1

出力したいパラメータ。

...

返り値

値を返しません。

例1 echo の例

<?php
echo "Hello World";

echo 
"This spans
multiple lines. The newlines will be
output as well"
;

echo 
"This spans\nmultiple lines. The newlines will be\noutput as well.";

echo 
"Escaping characters is done \"Like this\".";

// echo 命令の中で変数を使用することが可能です
$foo "foobar";
$bar "barbaz";

echo 
"foo is $foo"// foo is foobar

// 配列を使用することもできます
$baz = array("value" => "foo");

echo 
"this is {$baz['value']} !"// this is foo !

// 値ではなく変数名を出力するシングルクオートを使用します
echo 'foo is $foo'// foo is $foo

// 他の文字を全く使用しない場合、echo 変数を使用可能です
echo $foo;          // foobar
echo $foo,$bar;     // foobarbarbaz

// 複数の文字列をそれぞれ別の引数として渡しても、
// すべて連結してひとつの引数として渡してもかまいません
echo 'This ''string ''was ''made ''with multiple parameters.'chr(10);
echo 
'This ' 'string ' 'was ' 'made ' 'with concatenation.' "\n";

echo <<<END
This uses the "here document" syntax to output
multiple lines with 
$variable interpolation. Note
that the here document terminator must appear on a
line with just a semicolon. no extra whitespace!
END;

// echo は関数のように動作しないので、以下のコードは正しくありません
($some_var) ? echo 'true' : echo 'false';

// しかし、次の例は動作します
($some_var) ? print 'true' : print 'false'// print も言語構造ですが、
                                            // 関数のように動作します。なので、
                                            // このコンテキスト中で使用できます
echo $some_var 'true''false'// 命令を変更
?>

注意

注意: これは、関数ではなく 言語構造のため、可変関数 を用いて コールすることはできません。

ヒント

複数の文字列をひとつに連結せずそのまま echo に渡す利点は、PHP におけるピリオド演算子の優先順位にあります。 複数の引数として渡す場合は、優先順位を考慮して括弧で囲んだりする必要はありません。

<?php
echo "Sum: "2;
echo 
"Hello ", isset($name) ? $name "John Doe""!";

連結を使う場合は、ピリオド演算子の優先順位が加算演算子や三項演算子よりも高いことに注意する必要があります。 そのため、以下のような場合に期待どおりの動きをさせるためには括弧が必要になります。

<?php
echo 'Sum: ' . (2);
echo 
'Hello ' . (isset($name) ? $name 'John Doe') . '!';

参考

add a note add a note

User Contributed Notes 3 notes

up
4
pemapmodder1970 at gmail dot com
4 months ago
Passing multiple parameters to echo using commas (',')is not exactly identical to using the concatenation operator ('.'). There are two notable differences.

First, concatenation operators have much higher precedence. Referring to http://php.net/operators.precedence, there are many operators with lower precedence than concatenation, so it is a good idea to use the multi-argument form instead of passing concatenated strings.

<?php
echo "The sum is " . 1 | 2; // output: "2". Parentheses needed.
echo "The sum is ", 1 | 2; // output: "The sum is 3". Fine.
?>

Second, a slightly confusing phenomenon is that unlike passing arguments to functions, the values are evaluated one by one.

<?php
function f($arg){
 
var_dump($arg);
  return
$arg;
}
echo
"Foo" . f("bar") . "Foo";
echo
"\n\n";
echo
"Foo", f("bar"), "Foo";
?>

The output would be:
string(3) "bar"FoobarFoo

Foostring(3) "bar"
barFoo

It would become a confusing bug for a script that uses blocking functions like sleep() as parameters:

<?php
while(true){
  echo
"Loop start!\n", sleep(1);
}
?>

vs

<?php
while(true){
  echo
"Loop started!\n" . sleep(1);
}
?>

With ',' the cursor stops at the beginning every newline, while with '.' the cursor stops after the 0 in the beginning every line (because sleep() returns 0).
up
5
Jamie Robinson
11 months ago
The {} syntax is useful for printing non array variables as well, an example to illustrate:

<?php
$foo
= "foobar";
$bar = "barbaz";

//Will produce the error: Undefined variable: $foo_
echo "$foo_$bar";

//Will print the intended string: "foobar_barbaz"
echo "{$foo}_$bar";
?>

Could even be worth getting into the habit of enclosing all variables in {} when writing echo strings, to be on the safe side.
up
-12
214363570 at qq dot com
4 months ago
Dear:
      Is there a offical function like echoln(), such as
  
     function echoln($s=""){
            echo $s."\n";
     }

     $str = "i love php";
     echoln($str);
     echoln($str);
     echoln($str);
     echoln($str);

     not is:
     echo $str."\n";
     echo $str."\n";
     echo $str."\n";
     echo $str."\n";
     echo $str."\n";

     Thank you.

     Best regards.
To Top