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

PHP中var_dump与print_r结果差异及JSON转数组问题排查

看起来你在这里犯了一个常见的小错误——多做了一次不必要的json_encode操作,导致最终得到的不是数组而是字符串,咱们一步步来解决:

问题根源

你执行的代码是:

$array = json_decode(json_encode($data), True);

如果$data本身已经是JSON格式的字符串,那么json_encode($data)会把这个字符串转成转义后的JSON字符串(比如把原字符串里的双引号变成\"),再用json_decode解析的话,得到的还是原来的JSON字符串,而不是你想要的PHP数组。这就是为什么var_dump显示的是长度1578的字符串,而不是数组结构。

正确的转换方式

直接对原始的JSON字符串使用json_decode即可,不需要额外的json_encode:

// 假设 $data 是你的原始JSON字符串
$array = json_decode($data, true);

这里第二个参数true确保返回的是关联数组,而不是stdClass对象。

解决print_r内容省略的问题

print_r在输出过长内容时,不管是浏览器还是终端环境,都会自动截断显示。要完整查看数组内容,可以这样做:

  1. 浏览器环境:用<pre>标签包裹输出,格式化且完整显示:
echo '<pre>';
print_r($array);
echo '</pre>';
  1. 终端/命令行环境:可以使用var_dump(它默认会完整输出),或者把print_r的结果保存到变量再输出:
$output = print_r($array, true);
echo $output;

额外的排查技巧

如果转换后还是有问题,可以用json_last_error()检查JSON解析是否出错:

$array = json_decode($data, true);
if (json_last_error() !== JSON_ERROR_NONE) {
    echo 'JSON解析失败: ' . json_last_error_msg();
}

这能帮你快速定位比如JSON格式不合法之类的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:23:52