Menu

PHP echo:输出文本、变量和 HTML

echo 输出一个或多个字符串:echo "Hello, $name"; 或 echo $a, $b;。它是向页面输出文本或 HTML 的常用方式。print 作用相同,但只接受一个值并返回 1;<?= $x ?> 是在 HTML 中使用的简写形式。

本页包含可运行的编辑器。编辑、运行,立即查看输出。

echo 用来输出文本。写 echo "Hello"; 输出一个字符串,写 echo "Hello, $name"; 在其中带上变量,写 echo $a, $b; 依次输出多个值。echo 输出的内容,就是浏览器显示的页面,或者你在终端里看到的文字。

第一行用了变量插值(变量直接写在双引号里),第二行用 . 运算符拼接字符串,第三行传入三个用逗号分隔的值。三种写法输出的结果是一样的。

用 echo 输出 HTML

在网页中,echo 通常输出的是 HTML。浏览器收到这段文本后会渲染其中的标签。点击“运行”,“页面”标签页会显示渲染后的结果:

最后一行用了单引号,这样 class="note" 里的双引号就不需要转义。单引号里的变量不会被替换,所以固定文本适合用单引号。如果值来自访问者(表单、URL),要先用 htmlspecialchars 处理再输出,防止被注入 HTML;见 htmlspecialchars 页面。

短 echo 标签 <?=

在 HTML 文件中,<?= $value ?> 是 <?php echo $value; ?> 的简写,能让模板保持简洁易读:

短 echo 标签始终可用。另一种短标签,即不带 php 的 <?,取决于一项配置,不建议使用。

输出多个值和换行

echo 不会自动换行。在终端中,要加上 "\n"(写在双引号里)或常量 PHP_EOL。在 HTML 中,源代码里的换行不会显示出来;要用 <br> 或分开的元素。

逗号和点号的输出结果相同。用逗号时,echo 逐个输出每个值;用点号时,PHP 先拼成一个字符串再输出。换行有单独的页面介绍:PHP 换行。

echo 与 print 的区别

print 是更早的写法。它只输出一个值,并且总是返回 1,因此可以出现在表达式中。echo 可以接受任意多个值,没有返回值。

echoprint
值的个数一个或多个,用逗号分隔只能一个
返回值无(它是语句)1
能否用在表达式中不能能,$ok = print "x";
常见用法几乎所有场景很少用

printf 又不一样:它用占位符格式化值,例如 printf("%05.2f", 3.14159),详见 sprintf 页面。

输出数组或对象

echo 只能输出字符串,以及能转换成字符串的值(数字、布尔值、null)。数组不能转换。在你自己的 PHP 环境中,会输出一条警告和单词 Array:

PHP Warning:  Array to string conversion in /home/index.php on line 3
Array

要显示数组的内容,选用合适的函数:

对象更严格:除非它的类定义了 __toString(),否则 echo $object; 会以 Error: Object of class User could not be converted to string 终止脚本。布尔值也常让人意外:echo true; 输出 1,echo false; 什么也不输出。需要看清确切的类型和值时,用 var_dump($value)。

常见错误:echo 带括号和逗号

因为 echo 看起来像函数,有人会写成 echo("a", "b");。这会产生解析错误,因为括号只能包住一个表达式:

PHP Parse error:  syntax error, unexpected token "," in /home/index.php on line 2

去掉括号(echo "a", "b";),或者把值拼接起来(echo("a" . "b");)。print 也是一样,不管加不加括号,它都不接受第二个值。

常见问题

PHP 中 echo 和 print 有什么区别?

两者都用来输出字符串。echo 可以接受多个用逗号分隔的值(echo $a, $b;),没有返回值;print 只接受一个值并返回 1,所以可以用在表达式中。实际开发中几乎都用 echo。

echo 需要加括号吗?

不需要。echo 是语言结构,不是函数,所以 echo "Hi"; 才是常规写法。echo("Hi"); 也能运行,因为括号只是把一个表达式括起来;但 echo("a", "b"); 会产生解析错误。

为什么 echo false 什么都不输出?

echo 会把值转换成字符串,false 变成空字符串 "",而 true 变成 "1"。要看到布尔值本身,用 var_dump($x);(输出 bool(false))或 echo var_export($x, true);(输出 false)。

PHP 中的 <?= 是什么意思?

<?= $value ?> 是短 echo 标签,等同于 <?php echo $value; ?>。从 PHP 5.4 起它始终可用,是在 HTML 模板中输出值的常用方式。

Coddy 编程语言插图

和 Coddy 一起学编程

开始