我正在使用以下代码在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
检查了它,但是有一个错误,它不能使用[]进行读取并且使用非法偏移。
我是这个新手,我也尝试过全面修改代码。我哪里错了?
答案 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;
}
}