PHP函数实现JSON文件购物车数据新增更新异常排查
错误原因
- 遍历
$carts数组的同时向该数组追加新元素,会导致foreach遍历次数随新增元素不断增加,最终生成大量重复数据 - 逻辑判断错误:你当前的逻辑是每遇到一条不匹配的购物车条目就新增一条数据,而非「所有条目都匹配不到时才新增」。比如你原始数组有2条数据,第一条不匹配就直接插入新数据,第二条匹配才做更新,自然会出现重复插入的问题
- 提交的
$data中p字段为字符串类型,做数值累加前建议先做类型转换,避免隐式类型转换导致的异常
修正后的代码
$data = array('sure'=>'1', 'id'=>'38138373','t'=>'6', 's'=>'s3', 'p'=>'6'); function updateCart($data,$user_id,$cartid){ $carts = getCart($user_id,$cartid); $isExist = false; $addNum = (int)$data['p']; foreach ($carts as $i => $cart) { if($cart['id'] == $data['id'] && $cart['t'] == $data['t'] && $cart['s'] == $data['s']) { $carts[$i]['p'] = (int)$cart['p'] + $addNum; $isExist = true; // 匹配到对应条目后直接跳出循环,避免不必要的遍历 break; } } // 所有条目遍历完成后仍未匹配到,才新增数据 if (!$isExist) { $data['p'] = $addNum; $carts[] = $data; } putJson($carts,$user_id,$cartid); }
内容的提问来源于stack exchange,提问作者beytullah kantar
相关产品推荐
相关产品推荐

