You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP报错:尝试在数组上读取属性'total'等问题求助

问题排查与解决

错误原因

从var_dump($_SESSION["carrito"])的输出可以明确看到,购物车中的每个元素是关联数组(例如["id"]=>"1"),但你的代码在foreach循环中错误使用了对象属性访问语法($producto->total、$producto->id等),PHP无法从数组中读取对象属性,因此抛出这些警告。

修复代码

将foreach循环内的对象属性访问改为数组下标访问即可解决问题:

foreach ($_SESSION["carrito"] as $producto) {
    $total += $producto["total"]; // 替换为数组下标访问
    $sentencia->execute([$producto["id"], $idVenta, $producto["cantidad"]]); // 全部替换为数组下标
    $sentenciaExistencia->execute([$producto["cantidad"], $producto["id"]]);
}

额外注意点

  • 代码存在一处逻辑疑问:你已经通过$total = $_POST["total"]获取了订单总金额,循环中又执行$total += $producto["total"],这会导致最终$total是POST提交金额与所有商品total的叠加值,大概率与实际订单金额不符。如果POST的total已是正确的订单总额,建议删除循环内的$total += $producto["total"]这一行。
  • 后续添加商品到购物车时,需保持数据结构一致(要么全用数组,要么全用对象),避免再次出现类型不匹配的错误。

内容的提问来源于stack exchange,提问作者esploter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 21:45:36