PHP中JSON解码后无法访问第一个键值的问题求助
解决PHP对象中第一个元素属性的访问问题
你的循环代码会遍历$amount_detail里的所有对象,每次循环都会把$discount重新赋值为当前对象的amount_discount,所以最后变量会被最后一个元素的0覆盖,自然拿不到第一个元素的55200。
下面是几种可行的解决方法:
方法1:直接访问指定键的对象
从打印结果能看到第一个元素的键是1,直接通过键名访问即可(数字键需要用花括号包裹):
if (is_object($amount_detail)) { $discount = $amount_detail->{'1'}->amount_discount; }
方法2:循环获取第一个元素后终止遍历
如果不确定第一个元素的键名,可以在循环拿到第一个元素后立刻跳出循环:
if (is_object($amount_detail)) { foreach ($amount_detail as $amount_detail_value) { $discount = $amount_detail_value->amount_discount; break; // 终止循环,只保留第一个元素的值 } }
方法3:将JSON解码为关联数组(更易用)
调用json_decode时传入第二个参数true,把JSON字符串转为关联数组,用数组下标访问会更直观:
// 第二个参数设为true,转换为关联数组 $amount_detail = json_decode($tuitionfee->amount_detail, true); if (is_array($amount_detail)) { $discount = $amount_detail[1]['amount_discount']; }
内容的提问来源于stack exchange,提问作者MaryUghojor
相关产品推荐
相关产品推荐

