PHP里往浏览器扔东西出去,两个最常见的家伙就是echo和print。表面上看它们干的是同一件事,但底层的设计思路不太一样。这篇把两个放在一起对比,看完你就知道什么时候该用谁。
一、echo是什么?
echo是PHP里的语言结构(language construct),不是函数。这意味着你用不用括号都行。它最实用的特点是——支持多个参数,用逗号隔开。
echo语法:
<?php
// 不用括号
echo "代码号开始学PHP";
// 用括号
echo("代码号用括号也行");
?>
echo能做什么:
<?php
// 输出普通字符串
echo "欢迎来到代码号学习网<br>";
// 输出变量
$siteName = "代码号教程";
echo "网站名称:" . $siteName . "<br>";
// 多个参数一次输出(print做不到)
echo "PHP ", "JavaScript ", "Python ", "都可以学";
?>
输出结果:
欢迎来到代码号学习网
网站名称:代码号教程
PHP JavaScript Python 都可以学
echo的特点:
-
可以带括号也可以不带
-
没有返回值(void)
-
支持多个参数,逗号分隔
-
速度比print稍快
二、print是什么?
print也是语言结构,用法跟echo类似,但有一个明显区别——它返回整数1。另外print不支持多参数。
print语法:
<?php
// 不用括号
print "代码号学print输出";
// 用括号
print("代码号用括号也可以");
?>
print能做什么:
<?php
// 输出字符串
print "代码号教程——每天进步一点点<br>";
// 输出变量
$author = "代码号团队";
print "作者:" . $author . "<br>";
// 下面这行会报错!print不支持多参数
// print "参数一", "参数二";
?>
print的特点:
-
可以带括号也可以不带
-
返回值固定为1
-
只能接受一个参数
-
速度比echo稍慢
三、echo和print的详细对比
| 对比项 | echo | |
|---|---|---|
| 类型 | 语言结构 | 语言结构 |
| 括号 | 可选 | 可选 |
| 返回值 | 无 | 整数1 |
| 多参数 | 支持(逗号分隔) | 不支持 |
| 常用场景 | 常规输出 | 表达式中使用 |
| 执行速度 | 较快 | 稍慢 |
四、代码号示例:实际代码对比
示例1:输出变量信息
<?php
$courseName = "PHP从入门到实战";
$teacher = "代码号讲师";
$year = 2026;
// 用echo输出
echo "课程名称:" . $courseName . "<br>";
echo "讲师:" . $teacher . "<br>";
echo "年份:" . $year . "<br>";
// 用print输出
print "课程名称:" . $courseName . "<br>";
print "讲师:" . $teacher . "<br>";
print "年份:" . $year;
?>
示例2:多参数输出(echo专属)
<?php
// echo可以这样写,省去拼接的麻烦
echo "PHP ", "是一门 ", "后端语言 ", "2026年仍然流行";
// print这样写会报语法错误
// print "PHP ", "是一门 ", "后端语言";
// print只能写成拼接形式
print "PHP " . "是一门 " . "后端语言 " . "2026年仍然流行";
?>
示例3:print返回值可以在表达式中用
<?php
// echo没有返回值,下面这行会报错
// $result = echo "测试";
// print有返回值1,可以这样写
$returnValue = print "代码号教程输出成功<br>";
echo "print返回的值是:" . $returnValue;
?>
输出:
代码号教程输出成功
print返回的值是:1
五、个人经验:为什么我几乎只用echo?
写PHP有些年头了,简单说下我的习惯。
常规输出100%用echo。原因很简单:
-
更灵活:想输出多个东西不用拼接,直接逗号隔开
-
更顺手:不用记返回值这种用不上的特性
-
代码更干净:少写点拼接符
.,阅读舒服
print那个返回值1的特性,理论上有用,但现实中我没遇到必须用print的场景。有人可能会这样做:
<?php
if (print "输出成功") {
// 会执行,因为print返回1
}
?>
但这有什么实际意义?判断输出是否成功不是靠返回值,而是靠业务逻辑本身。
代码号建议:统一用echo就够了。print的存在更多是PHP历史遗留的多样性,知道它、能看懂就够了,不需要主动用它。
六、特殊情况说明
虽然echo不支持整个数组直接输出,但可以配合print_r()使用。print也一样。
<?php
$lessons = ["变量", "循环", "函数", "数组"];
// 输出整个数组结构
echo "<pre>";
print_r($lessons);
echo "</pre>";
// 输出数组某个元素
echo $lessons[0]; // 输出:变量
print $lessons[1]; // 输出:循环
?>
七、本节课程知识要点
| 知识点 | 说明 |
|---|---|
| echo多参数 | echo "a", "b", "c" 合法,print不行 |
| print返回值 | 固定返回整数1,echo无返回值 |
| 执行速度 | echo略快于print(差异很小) |
| 语法写法 | 两者都可加或不加括号 |
| 日常选型 | 常规输出用echo足够 |
| 数组输出 | 两者都不能直接输出数组,用print_r() |