在PHP里把东西显示到浏览器上,最常用的就是echo和print。这两个经常被混着用,但底层逻辑有点差别。
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 | |
|---|---|---|
| 参数数量 | 支持多个,逗号隔开 | 只接受1个参数 |
| 返回值 | 无返回值 | 返回整数1 |
| 括号用法 | 可加可不加(多参数时必须加) | 必须加括号 |
| 执行速度 | 略微快一点 | 略慢一点点 |
代码号对比示例:
<?php
// echo可以一次输出多个
echo '代码号', '学PHP', '2026年继续加油';
// print只能输出一个
print '代码号学PHP教程';
// 下面这行会报错——print不能多参数
// print '参数一', '参数二';
?>
个人建议:日常输出直接用echo。原因有三:
-
多输出几次不会有性能负担,但
echo确实快一点(虽然差别微小到测不出来) -
支持多参数在某些拼接场景下更方便
-
print返回1这个特性基本用不上——谁会在输出语句里判断返回值?
我自己的习惯是:输出普通字符串用echo,输出带复杂逻辑拼接的内容先把变量拼好再echo,几乎不用print。老实说print能做的事echo都能做,但反过来不行。所以选echo就够了。
本节课程知识要点
-
echo:语言结构,非函数。括号可用可不用。
-
多参数:括号内逗号隔开,
echo('a','b','c') -
转义:反斜杠
\,输出反斜杠本身要写\\ -
变量解析:双引号内自动解析变量;数组变量用花括号
{$arr['key']} -
HTML混编:echo直接输出带标签的字符串,浏览器正常渲染
-
echo vs print:echo无返回值、支持多参数、速度略快;日常选echo足够