Я реализую Ajax Cart в PHP5 на уровне ядра с этим кодом:

$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, но есть ошибка, которая не может использовать [] для чтения и используются недопустимые смещения.

Я новичок в этом, и я также попытался изменить код во всем. Куда я иду не так?

php
-1
Akshay Shrivastav 4 Апр 2017 в 15:49

2 ответа

Лучший ответ

Я не очень хорошо понимаю, что вы хотите, но я поставил это на ответ, потому что слишком велик, чтобы поставить комментарии:

 $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;
    }
    }
1
Nerea 4 Апр 2017 в 13:12

Я не уверен, что вы имели в виду, но у вас есть ошибка в этой строке:

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

Первый параметр $itemArray[] вызывает проблему.

Обозначение $itemArray[] - это специальное сокращение PHP для помещения элемента в массив. Вы используете это так:

$itemArray[]='new value';

Однако вы можете использовать его только в левой части выражения присваивания. Как видите, он выдает ошибку, если вы пытаетесь читать с нее, что не имеет смысла.

1
Manngo 4 Апр 2017 в 12:54