无法访问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
相关产品推荐
相关产品推荐

