You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么PHP中print_r($_SERVER)不传第二参数时仅返回1?

问题原因说明

这是print_r函数的原生设计导致的,属于完全合理的技术行为:

  • PHP官方定义的print_r函数签名为:print_r(mixed $value, bool $return = false)
  • 当第二个参数$return保持默认值false时,函数会直接把变量的格式化内容输出到PHP输出缓冲区,返回值固定为布尔值true
  • 当$return设为true时,函数不会直接输出内容,而是将格式化结果作为字符串返回。

你最初的代码直接将print_r($d)、print_r($_SERVER)的返回值拼接为邮件正文,相当于把两个布尔值true拼接成字符串。在PHP的类型转换规则中,布尔值true转换为字符串后就是"1",因此最终邮件内容就是"1\n\n\n1",和你收到的结果完全匹配。

认知纠正

不存在“仅echo场景需要传第二个参数”的规则:只要你需要把print_r的格式化结果作为字符串使用(无论是传入mail作为邮件正文、存入变量、写入日志文件等),都必须将第二个参数设为true,否则你只能拿到代表执行成功的布尔返回值。

你修改后的代码是符合语法要求的,后续触发规则后就能收到包含完整$d和$_SERVER内容的邮件。


内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 04:39:04