← PHP代码结构 没有下一篇了 →

PHP输出:echo和print到底怎么用?

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

在PHP里把东西显示到浏览器上,最常用的就是echoprint。这两个经常被混着用,但底层逻辑有点差别。

echo不是函数,是语言结构(language construct)。这意味着你用不用括号都行。但有个细节——传多个参数的时候,必须加括号。

语法看一眼就够了:

void echo ( string $arg1 [, string $... ] )

返回值?没有。它就是纯输出。

echo能输出什么?

字符串、多行文本、转义字符、变量、数组,基本都行。

1. 输出普通字符串

代码号示例:

<?php
echo '代码号开始学PHP了<br />';
echo '今天学的是echo输出<br />';
echo '她说:"PHP还挺有意思的"<br />';
echo 'Windows路径示例:C:\\xampp\\htdocs<br />';
?>

输出:

代码号开始学PHP了
今天学的是echo输出
她说:"PHP还挺有意思的"
Windows路径示例:C:\xampp\htdocs

注意反斜杠要写两个\\,一个的话PHP会当成转义符。新手经常在这翻车——写个C:\Program Files,结果输出变成C:Program Files,反斜杠没了。

2. 输出多行文本

<?php
echo "代码号学习PHP
这是一行
这是第二行
echo可以跨行输出";
?>

输出里换行是保留的。但浏览器不认换行符,只会认<br />。你看到文本连在一起的话,右键查看网页源代码才能看到真实换行。所以项目开发中要么用<br />,要么包在<pre>标签里。

3. 转义字符输出

<?php
echo "引号转义:\"代码号\"来也";
?>

输出:

引号转义:"代码号"来也

4. 输出变量

这个用得最多。

<?php
$courseName = '代码号学PHP';
$website = 'ebingou.cn';

// 双引号里直接写变量名——会解析
echo "$courseName 在 $website 学习 <br />";

// 直接输出变量
echo $courseName;
echo "<br />";
echo $website;
echo "<br />";

// 关联数组的输出——用花括号
$langs = array('php' => 'PHP 8.x', 'js' => 'JavaScript ES6');
echo "后端学的是:{$langs['php']},前端学的是:{$langs['js']}";
?>

输出:

代码号学PHP 在 ebingou.cn 学习 
代码号学PHP
ebingou.cn
后端学的是:PHP 8.x,前端学的是:JavaScript ES6

个人经验:双引号里直接用变量很方便,但养成习惯——变量名后面加个空格或者用花括号{$var}包起来。不然写成"$courseName学习"没问题,写成"$courseName学习资料"解析就乱了。PHP会以为变量叫$courseName学习资料

echo里混HTML标签

这在项目中太常见了。PHP文件里直接输出带样式的HTML。

输出带颜色的段落

<?php
echo '<p>这是普通段落</p>';
echo "<p><span style='color:blue;'>蓝色文字示例</span></p>";
echo "<p><span style='color:red;'>红色文字示例</span></p>";
echo "<p><span style='color:green;'>绿色文字示例</span></p>";
?>

输出表格(实际项目常用)

<?php
$costA = 380;
$costB = 560;
$costC = 720;

echo "<h3>代码号月度支出记录</h3>";
echo "<table border='1' cellspacing='0' cellpadding='6'>
      <tr>
        <th>成员</th>
        <th>支出金额</th>
      </tr>
      <tr>
        <td>学习A组</td>
        <td>\${$costA}</td>
      </tr>
      <tr>
        <td>学习B组</td>
        <td>\${$costB}</td>
      </tr>
      <tr>
        <td>学习C组</td>
        <td>\${$costC}</td>
      </tr>
      </table>";
?>

美元符号$在PHP里有特殊含义(变量标志),想输出真正的美元符号要加反斜杠\$转义。

echo vs print 怎么选?

两个都是输出用的语言结构,不是函数。但区别很明显。

对比项 echo print
参数数量 支持多个,逗号隔开 只接受1个参数
返回值 无返回值 返回整数1
括号用法 可加可不加(多参数时必须加) 必须加括号
执行速度 略微快一点 略慢一点点

代码号对比示例:

<?php
// echo可以一次输出多个
echo '代码号', '学PHP', '2026年继续加油';

// print只能输出一个
print '代码号学PHP教程';

// 下面这行会报错——print不能多参数
// print '参数一', '参数二';
?>

个人建议:日常输出直接用echo。原因有三:

  1. 多输出几次不会有性能负担,但echo确实快一点(虽然差别微小到测不出来)

  2. 支持多参数在某些拼接场景下更方便

  3. print返回1这个特性基本用不上——谁会在输出语句里判断返回值?

我自己的习惯是:输出普通字符串用echo,输出带复杂逻辑拼接的内容先把变量拼好再echo,几乎不用print。老实说print能做的事echo都能做,但反过来不行。所以选echo就够了。

本节课程知识要点

  • echo:语言结构,非函数。括号可用可不用。

  • 多参数:括号内逗号隔开,echo('a','b','c')

  • 转义:反斜杠\,输出反斜杠本身要写\\

  • 变量解析:双引号内自动解析变量;数组变量用花括号{$arr['key']}

  • HTML混编:echo直接输出带标签的字符串,浏览器正常渲染

  • echo vs print:echo无返回值、支持多参数、速度略快;日常选echo足够

← PHP代码结构 没有下一篇了 →
分享笔记 (共有 篇笔记)
验证码:
微信公众号