return语句仅返回值而不输出,需显式接收或打印;遇return即终止函数执行;可返回多种类型但调用方须适配;在include中return可传递值,require中则报错。

return 语句不等于“打印结果”
很多人写完 return 就以为浏览器该显示值了,其实它只是把值交还给调用它的上下文——函数外没接住,就彻底丢掉。比如:
function get_name() {
return "张三";
}
get_name(); // 这行什么都不会输出你得显式用 echo 或赋值后处理:$name = get_name(); echo $name; // 才能看到 "张三"常见错误是误把
return 当 echo 用,尤其在模板里直接调函数却不接收返回值。
return 后面的代码永远不执行
PHP 遇到 return 立刻跳出当前函数,后面所有语句(包括 echo、throw、exit)全被跳过。这是最常踩的逻辑坑:
function check_user($id) {
if (!$id) {
return false;
echo "ID 不能为空"; // 永远不会执行
exit; // 同样不会执行
}
return true;
}如果真想调试,得把 echo 放在 return 前;如果要终止脚本,return 不够用,得用 die() 或 exit()(但注意:它们和 return 作用域不同)。
return 可以返回多种类型,但调用方得按约定处理
PHP 不强制类型,return 能返回 null、array、object、甚至匿名函数,但后续代码必须适配。比如:
- 函数声明返回数组,却在某分支
return null,调用方用foreach就会报Invalid argument supplied for foreach() - 用
return $pdo->query(...)返回PDOStatement,但忘了调用fetch(),直接当数组用就会出错 - 早期 PHP 版本不支持 void 类型提示,靠文档或注释约定“无返回值”,实际写了
return;和return null;行为一致,但语义不同
在 require/include 中 return 会提前退出引入文件
这个行为容易被忽略:return 在被 require 或 include 的文件顶层使用,会直接结束该文件执行,并把值作为 include 的返回值(require 则报致命错误)。例如:
// config.php
return [
'host' => 'localhost',
'port' => 3306
];$config = include 'config.php'; // $config 就是上面那个数组但如果在
config.php 里漏了 return,或者中间加了条件判断没覆盖所有路径,$config 就会是 1(即引入成功标识),而不是预期的数组。这种写法常见于配置加载,但务必确保最后一行是 return,且前面没意外中断。
函数返回值本身没玄机,难的是每处调用都记得“它给了什么、我该怎么接”。类型模糊、分支遗漏、作用域混淆——这些才是真实项目里花半天才定位到的问题。










