间接修改App\\Models\\XXX 重载元素无效
关于 Indirect modification of overloaded element of App\Models\XXXXX has no effect
间接修改App\Models\XXX 的重载元素无效
出错代码如下:
foreach ($result as $key=>$val){
$result[$key]['attrs'] = json_decode($val['result'],true)['value'];
foreach ($result[$key]['attrs'] as $k=>$v){
$result[$key]['attrs'][$k]['detail'] = explode(',',$v['sku']);
}
}
发生这样的问题是因为传统PHP框架中Mysql查询的数据统一为数组,而新的框架将查询内容统一处理为对象。对象操作不能和数组一样随意追加元素,如果我们要追加新的元素,可以采用以下两种办法:
1、使用中间变量
foreach ($result as $key=>$val){
$arr = [];
$arr = json_decode($val['result'],true)['value'];
foreach ($arr as $k=>$v){
$arr[$k]['detail'] = explode(',',$v['sku']);
}
$result[$key]['attrs'] = $arr;
}
2、转换为数组操作
操作方法一致,将查询到的结果集result->toArray()然后进行数组操作即可。
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: