我一直在努力创建一个非常简单的购物车,而我的$_SESSION
数组出现了问题。这是一个学校项目,我试图让它尽可能简单。
我得到的错误是:
注意:未定义索引:购物车在C:\ xampp \ htdocs \ Final \ menu.php上 第31行
注意:未定义的偏移量:C:\ xampp \ htdocs \ Final \ menu.php中的5 第31行
if(isset($_GET['id'])){
$product_id = $_GET['id'];
$_SESSION['cart'][$product_id]++;
print_r($_SESSION);
print "<br>";
print_r($_GET);
}
一旦我向特定product_id
添加了多个项目,错误就会消失。这是我读过的教程解释为向购物车添加商品的方式。有什么建议吗?
答案 0 :(得分:0)
看起来$ _SESSION ['cart']尚不存在。因为它将是一个数组,首先使用:
实例化它if(!array_key_exists('cart', $_SESSION)) $_SESSION['cart'] = array();
由于您尚未向$_SESSION['cart'][$product_id]
分配任何内容,因此在尝试增加此类错误时会出现此类错误。您可以尝试:
$_SESSION['cart'][$product_id] = (array_key_exists($product_id, $_SESSION['cart'])) ? $_SESSION['cart'][$product_id] +1 : 1;
或if
声明:
if(array_key_exists($product_id, $_SESSION['cart'])) $_SESSION['cart'][$product_id]++;
else $_SESSION['cart'][$product_id] = 1;
答案 1 :(得分:0)
执行$_SESSION['cart'][$product_id]++;
时,您确实在做:
$_SESSION['cart'][$product_id] = $_SESSION['cart'][$product_id] + 1;
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ generates warning if they keys do not exist yet
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^ assigns without problems if they keys do not exist yet
使用新创建的键的赋值不是问题,php会生成警告,试图获取$_SESSION['cart'][$product_id]
的实际值。
要解决此问题,您应该正确初始化变量:
$_SESSION['cart'][$product_id] = isset($_SESSION['cart'][$product_id])
? $_SESSION['cart'][$product_id]++
: 1;