[
{"prodname":"名称1","prodprice":"11.00","executionprice":"22.00","quantity":"2","unit":"1"},
{"prodname":"名称2","prodprice":"444.00","executionprice":"33.00","quantity":"5","unit":"4"}
... 其他项,数量未知,格式和上面一样。。。
]
我需要每个对象的 executionprice * quantity = 值
再把所有对象的的 值 加起来。。
最开始,我以为这是一个数组,所以使用了以下写法。
$prods = 上面的哪个数组;
$executionprice_quantity = 0;
foreach ($prods as $key => $prod) {
$executionprice_quantity += $prod['executionprice'] * $prod['quantity']
}
dd($executionprice_quantity);
但是报错
Parse error: syntax error, unexpected '{', expecting ']' in ...
错误在于,这不是数组,是json。所以需要使用json_decode()。
最后写法如下
$prods = json_decode(上面的哪个json);
$executionprice_quantity = 0;
foreach ($prods as $key => $prod) {
$executionprice_quantity += $prod['executionprice'] * $prod['quantity']
}
dd($executionprice_quantity);
但是又报错了,提示
Cannot use object of type stdClass as array
原因是
php调用json_decode从字符串对象生成json对象时,如果使用[]操作符取数据,会得到下面的错误
错误:
Cannot use object of type stdClass as array
产生原因:
$res = json_decode($res);
$res['key']; //把 json_decode() 后的对象当作数组使用。
解决方法(2种):
1、使用 json_decode($d, true)。就是使json_decode 的第二个变量设置为 true。
2、json_decode($res) 返回的是一个对象, 不可以使用 $res[‘key’] 进行访问, 换成 $res->key 就可以了。
所以最终的写法是
foreach ($prods as $prod) {
$executionprice_quantity += $prod->executionprice * $prod->quantity;
}