提交表单时出现以下错误:
PHP注意:未定义的偏移量:E:\ php \ learning2 \ increase.php中的1 第10行
PHP注意:未定义的索引:E:\ php \ learning2 \ increase.php中的数量 在第10行
形式:
<form action="increase.php" method="post">
<input type="hidden" name="productId" value="1">
<input type="number" name="productQuantity" value="1">
<input type="submit" name="submit" value="Add to basket">
</form>
increase.php
session_start();
if (isset($_POST['submit'])) {
$productId = $_REQUEST['productId'];
$productQuantity = $_REQUEST['productQuantity'];
$_SESSION['cart'][$productId]['quantity'] += $productQuantity;
header('Location: http://localhost:8000/');
}
如何解决?
答案 0 :(得分:1)
这些是通知,旨在让您深入了解您的代码可能无法按预期方式运作的原因:
$_SESSION['cart'][$productId]['quantity'] += $productQuantity;
此处:$productId
(已评估的数字)不是数组$_SESSION['cart']
的一部分,您尝试将其视为数组。 PHP会自动将其初始化为数组,然后将该数组的['quantity']
设置为$productQuantity
。因为PHP正在做出这样的假设(因为你正试图把它当作一个数组来处理,而它不是),它会抛出一个NOTICE Exception。
你可以通过两种方式修复它。首先,您可以禁用通知,并假设它按预期工作:
error_reporting(E_ALL & ~E_NOTICE);
或者,通过显式初始化数组来修复导致它的错误:
if ( !isset($_SESSION['cart']) )
{
$_SESSION['cart'] = array();
}
if ( !isset($_SESSION['cart'][$productId]) )
{
$_SESSION['cart'][$productId] = array('quantity' => 0);
}
$_SESSION['cart'][$productId]['quantity'] += $productQuantity;