维护一个TP7项目遇到的痛点
本帖最后由 carely 于 2023-5-12 10:07 编辑$backpacks = CourseBackpack::where('product_id', $product_id)->whereIn('user_id', $user_ids)->select();
foreach ($backpacks as $backpack) {
// product_json 是个json格式的字段 为什么这么设计 很是头疼
// 数据库使用mysql 存储引擎是 InnoDB 估计关于存储结构表空间这块知识没有深入理解
/**
* 错误赋值
* 重点在此处一 居然不能这么操作 foreach $bag_json
* $bag_json = $backpack['product_json']['bag_json'] ?? [];
*/
$product_json = $backpack['product_json'] ?? [];
// $product_json 中又存在课包的信息
$bag_json = $product_json['bag_json'] ?? [];
if (empty($bag_json)) continue;
// 循环读取课包
foreach ($bag_json as &$bag) {
// 获取各个章节信息
$bar = $bag['bar'] ?? [];
if (empty($bar)) continue;
// 循环读取各个章节
foreach ($bar as &$item) {
// 修改课节信息
$item['is_pre'] = 1;
$item['is_free'] = 1;
}
$bag['bar'] = $bar;
}
/**
* 错误设置值
* 重点在此处二 居然不能这么操作
* 运行后一直在请求 最后报错
* 一度以为是数据量太多导致请求超时
* 打印报错:Indirect modification of overloaded element......
* 查资料只是说: 做foreach循环嵌套的时候报错。这个时候需要中间变量
* $backpack['product_json']['bag_json'] = $bag_json;
*/
$product_json['bag_json'] = $bag_json;
$backpack['product_json'] = $product_json;
$backpack->save();
}
$bag_json = $backpack['product_json']['bag_json'] ?? [];$backpack['product_json']['bag_json'] = $bag_json;
查资料说: 做foreach循环嵌套的时候报错。这个时候需要中间变量。但是具体底层如何报错的 有谁能解答下?
新人一枚,第一次发帖,多多包涵,java开发的,维护公司的PHP项目 框架tp7.4
你这个样式看得头疼 好好看下w3c标准吧。 连标准都不尊重的人 给点数据测测呗 还有tp7是什么鬼。。 thinkphp??thinkphp 7什么时候出了?thinkphp 6吧? 眼睛受不了,还是不看了 虽然我不太懂,但我大受震撼{:17_1065:}
页:
[1]