非法偏移并且不能使用[]来读取错误

时间:2017-04-04 12:49:08

标签: php

我正在使用以下代码在PHP5中实现PHP5中的Ajax Cart:

$resp = $cart->getDetails(filter_var($_POST["pid"], FILTER_SANITIZE_NUMBER_INT));

if($resp == "" OR $resp == null)
{
    echo "Some Error!";
}

elseif($resp != "" || $resp != null)
{
    while($row = $resp->fetch_assoc())
    {
        $itemArray[] = array(
            $resp => array(
                'name' => $row["product_name"],
                'id' => $row["id"],
                'discount' => $row["discount"],
                'quantity' => 1,
                'price' => $row["price"]
            )
        );
    }

    print_r($itemArray);

    if(!empty($_SESSION["cart_item"]))
    {
        if(in_array($itemArray[], $_SESSION["cart_item"]))
        {
            foreach($_SESSION["cart_item"] as $k => $v)
            {
                if($itemArray[] == $k)
                    $_SESSION["cart_item"][$k]["quantity"] = $_POST["quantity"];
            }
        }
        else
        {
            $_SESSION["cart_item"] = array_merge($_SESSION["cart_item"],$itemArray);
        }
    }
    else
    {
        $_SESSION["cart_item"] = $itemArray;
    }
}

我在$resp中正确获取了值,因为我使用num_rows > 0检查了它,但是有一个错误,它不能使用[]进行读取并且使用非法偏移。

我是这个新手,我也尝试过全面修改代码。我哪里错了?

2 个答案:

答案 0 :(得分:1)

我不确定你的意思,但你在这一行中有错误:

if(in_array($itemArray[], $_SESSION["cart_item"])) …

第一个参数$itemArray[]导致问题。

符号$itemArray[]是用于将元素推送到数组的特殊PHP简写。你这样使用它:

$itemArray[]='new value';

但是,您只能在赋值表达式的左侧使用它。如您所见,如果您尝试从中读取它会产生错误,这没有任何意义。

答案 1 :(得分:1)

我不太了解你想要什么,但我把它放在了答案上因为太大而无法提出意见:

 $resp = $cart->getDetails(filter_var($_POST["pid"], FILTER_SANITIZE_NUMBER_INT));

    if($resp == "" OR $resp == null)
    {
        echo "Some Error!";
    }

    elseif($resp != "" || $resp != null)
    {
        while($row = $resp->fetch_assoc())
        {
            $itemArray = array(
             array(
                'name' => $row["product_name"],
                'id' => $row["id"],
                'discount' => $row["discount"],
                'quantity' => 1,
                'price' => $row["price"]
            )
            );
        }

    print_r($itemArray);

    if(!empty($_SESSION["cart_item"]))
    {
        if(in_array($itemArray, $_SESSION["cart_item"]))
        {
            foreach($_SESSION["cart_item"] as $k => $v)
            {
                if(in_array($k, $itemArray))
                    $_SESSION["cart_item"][$k]["quantity"] = $_POST["quantity"];
            }
        }
        else
        {
            $_SESSION["cart_item"] = array_merge($_SESSION["cart_item"],$itemArray);
        }
    }
    else
    {
        $_SESSION["cart_item"] = $itemArray;
    }
    }