PHP里除了echo,另一个常见输出方式就是print。它跟echo很像,但又不太一样。不少新手两个混着用也没出过大问题,但真要写代码的时候,选哪个是有说法的。
print也是语言结构(language construct),不是函数。加不加括号都行。语法长这样:
int print(string $arg)
注意看,它有一个返回值——整数1。这事后面细说。
print能输出什么?
字符串、多行文本、转义字符、变量、数组元素都能输出。但整个数组直接输出不行,要用print_r()。
1. 输出字符串
代码号示例:
<?php
print "代码号开始学print输出";
print ("代码号用括号包起来也行");
?>
输出是这样连在一起的,没有自动换行:
代码号开始学print输出代码号用括号包起来也行
没空格、没换行。想让它们分开?手动加<br>或空格。
<?php
print "第一行<br>";
print "第二行<br>";
?>
2. 输出多行文本
<?php
print "代码号学PHP
这是第二行内容
print支持多行字符串
";
?>
跟echo一样,浏览器显示不认换行。建议用<br>标签明确分行。
<?php
print "第一行<br>第二行<br>第三行";
?>
3. 转义字符输出
双引号里想用双引号,必须转义。
<?php
print "代码号说:\"用print输出带引号的句子\"";
?>
输出结果:
代码号说:"用print输出带引号的句子"
不转义会怎样?报错:Parse error: syntax error, unexpected identifier。PHP看到双引号以为字符串结束了,后面内容解析不了。
4. 变量输出
<?php
$siteName = "代码号学习网";
$year = 2026;
print "正在学习:{$siteName},年份:{$year}";
?>
输出:
正在学习:代码号学习网,年份:2026
双引号里直接写变量名就行,跟echo一模一样。
5. 数组输出——这个不一样
print不能直接输出整个数组。下面这行会报错:
<?php
$langs = ["PHP", "JavaScript", "Python"];
// print $langs; // 这句会报错
?>
想输出数组内容,有两种方式:
<?php
$langs = ["PHP", "JavaScript", "Python"];
// 方式一:用print_r()函数,适合看整个数组结构
print_r($langs);
echo "<br>";
// 方式二:print只输出单个元素
print $langs[0]; // 输出 PHP
echo "<br>";
print $langs[1]; // 输出 JavaScript
?>
print_r()输出格式:
Array ( [0] => PHP [1] => JavaScript [2] => Python )
print的三个局限(跟echo对比就明白了)
局限一:不能传多个参数
echo可以这样写:echo "a", "b", "c"
print不行。下面这段代码直接报错:
<?php
// 下面这行会报语法错误
print "代码号", "学编程", "2026";
?>
错误信息:Parse error: syntax error, unexpected token ","
print一次只能输出一个东西。多个内容要拼成字符串:
<?php
print "代码号" . "学编程" . "2026"; // 用点号拼接
?>
局限二:不转义就报错
<?php
// 下面这行会报错
print "代码号说"欢迎来学PHP"";
?>
双引号内又出现双引号,必须加反斜杠转义:
<?php
print "代码号说\"欢迎来学PHP\"";
?>
局限三:速度略慢
print返回值是1,echo没有返回值。这个“返回”动作多了一点点开销。项目开发中几乎感觉不到差别,但大量输出操作时理论上echo更快。
print vs echo 到底怎么选?
| 对比项 | echo | |
|---|---|---|
| 是否语言结构 | 是 | 是 |
| 是否可加括号 | 可选 | 可选 |
| 返回值 | 无 | 整数1 |
| 多参数 | 支持(逗号隔开) | 不支持 |
| 输出数组直接 | 也不行,要用print_r | 也不行,要用print_r |
| 执行速度 | 稍快 | 稍慢 |
个人经验分享
我写PHP这些年,几乎没用过print做常规输出。不是因为print“差”,而是echo够用了,而且更灵活。print返回1的特性理论上可以这么用:
<?php
if (print "输出成功") {
// 返回值是1,条件成立
echo "并且print返回了1";
}
?>
但现实中谁会这么写?判断输出成不成功靠的是业务逻辑,不是print的返回值。
代码号建议:日常输出用echo就够了。print更多是语法上存在,让你知道PHP有这个东西。唯一可能用到print的场景是某些老框架或者别人代码里碰上了,你能看懂就行,不需要自己主动用。
本节课程知识要点
-
print:语言结构,返回值固定为1
-
语法:
print "字符串"或print("字符串")都可 -
多参数:print不支持逗号分隔多参数,需用
.拼接 -
转义:双引号内套双引号必须用反斜杠
\" -
数组输出:用
print_r()函数,或print输出单个元素$arr[索引] -
速度:print比echo稍慢(有返回值开销)
-
选哪个:常规输出用echo;print了解即可