← PHP输出:echo和print到底怎么用? 没有下一篇了 →

PHP print详解:跟echo到底差在哪儿?

原创 2026-05-08 PHP 已有人查阅

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 print
是否语言结构
是否可加括号 可选 可选
返回值 整数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了解即可

← PHP输出:echo和print到底怎么用? 没有下一篇了 →
分享笔记 (共有 篇笔记)
验证码:
微信公众号