# echo

(PHP 4, PHP 5, PHP 7)

echo — 输出一个或多个字符串

### 说明

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

输出所有参数。不会换行。

echo 不是一个函数（它是一个语言结构）， 因此你不一定要使用小括号来指明参数，单引号，双引号都可以。 echo （不像其他语言构造）不表现得像一个函数， 所以不能总是使用一个函数的上下文。 另外，如果你想给echo 传递多个参数， 那么就不能使用小括号。

echo 也有一个快捷用法，你可以在打开标记前直接用一个等号。在 PHP 5.4.0 之前，必须在php.ini 里面启用 short_open_tag 才有效。

    I have <?=$foo?> foo.

和 print 最主要的不同之处是， echo 接受参数列表，并且没有返回值。

### 参数

`arg1`

  要输出的参数

`...`

### 返回值

没有返回值。

### 范例

Example #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\".";

    // You can use variables inside of an echo statement
    $foo = "foobar";
    $bar = "barbaz";

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

    // You can also use arrays
    $baz = array("value" => "foo");

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

    // Using single quotes will print the variable name, not the value
    echo 'foo is $foo'; // foo is $foo

    // If you are not using any other characters, you can just echo variables
    echo $foo;          // foobar
    echo $foo,$bar;     // foobarbarbaz

    // Strings can either be passed individually as multiple arguments or
    // concatenated together and passed as a single argument
    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;

    // Because echo does not behave like a function, the following code is invalid.
    ($some_var) ? echo 'true' : echo 'false';

    // However, the following examples will work:
    ($some_var) ? print 'true' : print 'false'; // print is also a construct, but
                                                // it behaves like a function, so
                                                // it may be used in this context.
    echo $some_var ? 'true': 'false'; // changing the statement around
    ?>

### 注释

> Note: 因为是一个语言构造器而不是一个函数，不能被 可变函数 调用。

Tip

相对 echo 中拼接字符串而言，传递多个参数比较好，考虑到了 PHP 中连接运算符（“.”）的优先级。 传入多个参数，不需要圆括号保证优先级：

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

如果是拼接的，相对于加号和三目元算符，连接运算符（“.”）具有更高优先级。为了正确性，必须使用圆括号：

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

### 参见

- print - 输出字符串
- printf() - 输出格式化字符串
- flush() - 刷新输出缓冲
- Heredoc 语法