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

无法访问PHP数组中键为784的元素问题求助

问题原因与解决方法

问题根源

你通过(array) json_decode($cart_str)将JSON对象强制转换为数组时,PHP对纯数字字符串形式的属性名有特殊处理逻辑:转换后的数组键名实际上会带有\0stdClass\0的前缀(虽然var_dump显示的是["784"],但这是PHP的显示优化,实际内部键名并非单纯的"784"),所以直接用'784'或784访问会提示未定义偏移。

解决方案

方法一:直接解析为关联数组(推荐)

调用json_decode时传入第二个参数true,让JSON直接解析为关联数组,无需后续强制转换:

$cart_str = isset($_COOKIE['cart']) ? $_COOKIE['cart'] : "{}";
echo $cart_str . "\n\n";
// 第二个参数设为true,直接得到关联数组
$cart_arr = json_decode($cart_str, true);

var_dump($cart_arr);
var_dump($cart_arr['784']);
var_dump($cart_arr[784]); // PHP会自动匹配数字键与字符串键

这样处理后,你可以正常用'784'或784访问对应元素。

方法二:使用带前缀的键访问(不推荐)

如果一定要保留对象转数组的方式,需要使用实际的内部键名访问:

var_dump($cart_arr["\0stdClass\0784"]);

这种方式繁琐且不直观,不建议使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 05:53:11