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

求助:PHP 7.4中include文件返回数组失效且出现多余输出

解决PHP引入文件返回数组时的多余输出问题

这问题我之前升级PHP版本时也踩过坑,核心原因是PHP版本对短标签的解析规则变化,导致你的被引入文件代码没被正确识别为PHP逻辑,反而直接输出了内容。

问题根源

你的被引入文件用了短标签<?,而PHP 7.4及以后版本中,short_open_tag配置项默认是关闭的。当这个配置关闭时,<?不会被识别为PHP代码的起始标记,文件里的return ['key' => 'value'];会被当成普通文本直接输出;同时include操作因为文件成功加载,返回值是int(1),这就出现了你看到的“先输出数组内容,再var_dump出1”的现象。而PHP 7.3中这个配置默认开启,所以之前没问题。

解决方案(优先推荐第一种)

  • 修改被引入文件为完整PHP标签
    把file.php的代码改成:

    <?php return ['key' => 'value'];
    

    这样不管short_open_tag配置是开是关,PHP都会正确解析这段代码,include会直接返回数组,不会产生任何多余输出,控制器里的var_dump($data)也会正常打印目标数组。

  • 开启short_open_tag配置(不推荐)
    如果一定要保留短标签,可以修改php.ini文件中的配置:

    short_open_tag = On
    

    修改后重启Web服务(比如Nginx、Apache)或PHP-FPM即可生效。但这种方式会降低代码的可移植性,很多生产环境默认关闭该配置,所以不推荐使用。

验证效果

修改后再次执行控制器代码,你会发现不会有多余的数组输出,var_dump($data)会直接打印出array(1) { ["key"]=> string(5) "value" },完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:13:42