PHP使用json_encode返回数据前多出Array字符串的问题如何解决?
问题原因
json_encode 本身不会在返回结果前添加 Array 前缀,该字符串是你代码中其他位置的额外输出导致的。
排查解决步骤
- 第一步:检查所有业务代码(包括引入的公共文件、数据库操作文件)中是否残留调试输出语句,比如直接
echo $response(PHP 中直接输出数组会默认返回字符串Array)、print_r($response)、var_dump($response)等,这类语句的输出会拼接到 JSON 响应前。 - 第二步:临时注释掉日志函数
function_to_log_response_to_server的调用,测试接口返回是否正常。部分日志函数除了写文件操作外,可能残留调试输出逻辑,也会导致多余内容输出。 - 第三步:在输出 JSON 前清空输出缓冲区并立即终止程序运行,修改代码如下:
<?php header('Content-Type: application/json'); /* 所有和数据库交互、构建响应数据的代码 */ function_to_log_response_to_server(json_encode($response)); ob_clean(); // 清空之前所有的输出缓冲区内容 echo json_encode($response); exit; // 输出完成后直接终止程序,避免后续代码输出多余内容 ?>
如果修改后响应正常,就可以确认是前面代码存在多余输出,再逐段排查定位具体的输出位置即可。
内容的提问来源于stack exchange,提问作者Gavin
相关产品推荐
相关产品推荐

