• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • echo()

    (PHP 4, PHP 5, PHP 7)

    输出一个或多个字符串

    说明

    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 #1echo例子

    <?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 语法
    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).

    上篇:crypt()

    下篇:explode()