第137行mycontroller中的ErrorException未定义的偏移量:2

时间:2016-04-14 14:36:10

标签: laravel-5.2

我收到此异常:未定义的偏移量:在数据库中插入多维数组时为2。这是我的循环,错误指向:

$order_details = [];
for($i= 0; $i < count($product); $i++){
    $order_details[] = [
        'order_id' => $orders->id,
        'product_id' => $product['product_id'][$i],
        'units'=>4,
        'quantity' => $product['quantity'][$i],
        'unit_price' => $product['price'][$i],
        'product_discount_id'=>0,
        'amount' => $product['amount'][$i],
    ];
}

当我回应我的阵列似乎看起来很好:

Array ( [product_id] => Array ( [0] => 7 [1] => 1 ) [quantity] => Array ( [0] => 2 [1] => 1 ) [price] => Array ( [0] => 200.00 [1] => 700.00 ) [amount] => Array ( [0] => 400 [1] => 700 ) )

未定义的偏移值会根据购物车中有多少项传递给循环而交替显示。例如,如果有3个项目,则将错误设置为Undefined offset:3 它就像我找不到真正的痣。我在网上搜索过我没有办法解决的问题。 任何援助亲切。我可能做错了什么?

2 个答案:

答案 0 :(得分:0)

您获得的错误是没有索引为count($product)的元素。

你应该使用:

for($i= 0; $i < count($product)-1 ; $i++)

这样你循环就可以了。

答案 1 :(得分:0)

这是一种奇怪的阵列结构。如果您重新安排数据,那么您可以更轻松地处理数据,这样每个产品都有一个项目:

$products = [
    [
        'product_id' => 7,
        'quantity' => 2,
        'price' => 200.00,
        'amount' => 400 
    ],
    [
        'product_id' => 1,
        'quantity' => 1,
        'price' => 700.00,
        'amount' => 700
    ]
];

然后你就可以了解产品。

问题的解决方法是for($i= 0; $i <= count($product); $i++)