Slim框架迭代购物车items数组报Illegal string offset错误咨询
问题原因及解决方案
核心错误原因
你报错的foreach循环中出现了变量覆盖问题,错误出在这行代码:
$item = $item['itemName'];
你把原本存储商品数组的循环变量$item直接重新赋值为了itemName字段的字符串值,后续代码再尝试用$item["itemPrice"]、$item["qty"]访问数组字段时,实际操作的已经是字符串类型的$item,自然就会抛出Illegal string offset错误。
其他测试代码正常的原因
你单独读取单个数组元素、返回整个items数组、以及第二个测试循环里都没有覆盖$item变量,所以都可以正常运行,该问题和Slim框架本身没有关系,属于PHP语法层面的变量名复用错误。
修复方案
把覆盖$item变量的行修改为其他变量名即可,参考代码如下:
foreach($order['cart']['items'] as $item) { $itemId = $item['itemId']; $itemName = $item['itemName']; // 变量名改为$itemName,避免覆盖循环变量$item $itemPrice = $item["itemPrice"]; $itemQty = $item["qty"]; // 后续业务逻辑 }
内容的提问来源于stack exchange,提问作者Abu Nooh
相关产品推荐
相关产品推荐

