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

如何解决production.ERROR: Cannot use string offset as an array购物车报错

问题解决方法

1. 修复代码语法错误

你的代码中数组定义处存在明显语法错误:

$cart[$id] = [. // 此处多余的点是错误根源之一

需修改为:

$cart[$id] = [

2. 确保Session中cart为数组类型

报错Cannot use string offset as an array的核心原因是:当前Session存储的cart不是数组,而是字符串类型(可能之前误将字符串存入了cart会话)。

临时修复方案

先清除错误的会话数据,执行以下操作后重新测试:

session()->forget('cart');

永久防护方案

在获取cart会话后添加类型校验,确保其始终为数组:

$cart = session()->get('cart', []);
// 强制转为数组,避免非数组数据导致报错
if (!is_array($cart)) {
    $cart = [];
}

3. 完整修正后的代码

public function addBooktoCart($id)
{
    $book = Transactions::findOrFail($id);

    $cart = session()->get('cart', []);
    // 确保cart是数组类型
    if (!is_array($cart)) {
        $cart = [];
    }

    if (isset($cart[$id])) {
        $cart[$id]['quantity']++;
    } else {
        $cart[$id] = [
            "name" => $book->title,
            "quantity" => 1,
            "price" => $book->price,
            "image" => $book->file
        ];
    }

    session()->put('cart', $cart);
    return redirect()->back()->with('success', 'Book has been added to cart!');
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 07:07:08