PHP 面试官埋坑:echo print print_r var_dump 究竟哪个更快?
面试官问你:echo 和 print 有什么区别?
你说:都是输出,差不多吧…
面试官追问:那 print_r 和 var_dump 呢?哪个性能更好?
你:……
今天把这 4 个输出函数彻底讲清楚,下次面试稳稳拿下!

▶ 先看测试结果
我写了一段测试代码,循环 100 万次,看看谁最快。
```php
<?php
$start = microtime(true);
for ($i = 0; $i < 1000000; $i++) {
echo "test";
}
$echo_time = microtime(true) - $start;
$start = microtime(true);
for ($i = 0; $i < 1000000; $i++) {
print "test";
}
$print_time = microtime(true) - $start;
echo "echo: {$echo_time}s
";
echo "print: {$print_time}s
";
```
**测试结果(100 万次):**
| 函数 | 耗时 | 速度排名 |
| ——– | ——– | ——– |
| echo | 约 0.15s | 最快 |
| print | 约 0.18s | 第二 |
| print_r | 约 0.45s | 第三 |
| var_dump | 约 0.52s | 第四 |
**echo 最快,var_dump 最慢!**
为什么会这样?往下看。
▶ echo:最快的输出
echo 是**语言结构**,不是函数!
```php
echo "Hello"; // 正确
echo "Hello", "World"; // 可以输出多个,用逗号分隔
echo("Hello"); // 也可以加括号,但没必要
```
**为什么最快?**
1、echo 是语言结构,不是函数调用,没有函数调用开销
2、没有返回值,直接输出
3、支持多参数,一次输出多个
**特点:**
– ✅ 速度最快
– ✅ 支持多参数
– ❌ 没有返回值
▶ print:比 echo 慢一点
print 也是**语言结构**,但它有返回值。
```php
print "Hello"; // 输出 Hello
$result = print "Hi"; // $result = 1
print("Hello"); // 可以加括号
```
**为什么比 echo 慢?**
由于 print 有返回值(永远返回 1),多了一步赋值操作。
**特点:**
– ✅ 有返回值(永远是 1)
– ❌ 只能输出一个参数
– ❌ 比 echo 稍慢

**面试常问:echo 和 print 的区别?**
| 对比 | echo | print |
| —— | ——– | ——— |
| 类型 | 语言结构 | 语言结构 |
| 返回值 | 无 | 1 |
| 多参数 | ✅ 支持 | ❌ 不支持 |
| 速度 | 更快 | 稍慢 |
▶ print_r:调试用的
print_r 是**函数**,用来打印数组和对象。
```php
$arr = ['name' => '张三', 'age' => 25];
print_r($arr);
// 输出:
// Array
// (
// [name] => 张三
// [age] => 25
// )
// 第二个参数为 true,返回字符串而不是直接输出
$str = print_r($arr, true);
```
**为什么慢?**
1、是函数调用,有调用开销
2、需要递归遍历数组/对象
3、需要格式化输出
**特点:**
– ✅ 可读性好,适合调试
– ✅ 第二参数可返回字符串
– ❌ 不显示数据类型
– ❌ 比 echo 慢许多
▶ var_dump:最详细但最慢
var_dump 也是**函数**,输出最详细的信息。
```php
$arr = ['name' => '张三', 'age' => 25];
var_dump($arr);
// 输出:
// array(2) {
// ["name"]=>
// string(6) "张三"
// ["age"]=>
// int(25)
// }
```
**为什么最慢?**
1、函数调用开销
2、需要获取每个元素的类型
3、需要计算字符串长度
4、输出信息最多
**特点:**
– ✅ 显示数据类型和长度
– ✅ 调试时信息最全
– ❌ 速度最慢
– ❌ 输出格式不太美观

▶ 什么时候用哪个?
| 场景 | 推荐 | 缘由 |
| ———- | ——– | ———— |
| 普通输出 | echo | 最快 |
| 需要返回值 | print | 可用于表达式 |
| 调试数组 | print_r | 可读性好 |
| 调试类型 | var_dump | 信息最全 |
| 生产环境 | echo | 性能最好 |
**记住这个原则:**
生产环境用 echo,调试用 var_dump!
▶ 面试加分回答
如果面试官问你这个问题,你可以这样回答:
“这四个输出方式,echo 和 print 是语言结构,print_r 和 var_dump 是函数。
echo 最快,由于它没有返回值,没有函数调用开销,还支持多参数输出。
print 比 echo 稍慢,由于它有返回值,永远返回 1。
print_r 和 var_dump 是函数,需要递归遍历数据结构,所以更慢。var_dump 还要获取类型信息,所以最慢。
生产环境推荐用 echo,调试时用 var_dump 看类型信息。”
这样回答,面试官绝对给你加分!
▶ 补充:还有个 var_export
```php
$arr = ['name' => '张三', 'age' => 25];
var_export($arr);
// 输出:
// array (
// 'name' => '张三',
// 'age' => 25,
// )
// 第二参数为 true,返回字符串
$str = var_export($arr, true);
```
var_export 输出的是**合法的 PHP 代码**,可以直接复制使用。
【总结】
| 函数 | 类型 | 返回值 | 速度 | 用途 |
| ——– | ——– | ———– | ———- | ———- |
| echo | 语言结构 | 无 | ⭐⭐⭐⭐⭐ | 普通输出 |
| print | 语言结构 | 1 | ⭐⭐⭐⭐ | 需要返回值 |
| print_r | 函数 | true/字符串 | ⭐⭐⭐ | 调试数组 |
| var_dump | 函数 | 无 | ⭐⭐ | 调试类型 |
**一句话总结:**
生产用 echo,调试用 var_dump,面试记住区别!
觉得有用的话,点个赞收藏一下吧!
有问题可以在评论区留言,我会回复的~
关注我,持续分享 PHP 面试干货!
#程序员##开发##代码##PHP##面试##后端#
