我有会话存储项目信息的数组,每个项目都有我想要的数量,当用户选择相同的项目时只需增加数量而不是再次添加它。 当我增加一个项目的数量时,它没关系,但是当我增加许多项目的数量时,只有第一个项目可以,其他项目正在增加,但同时它们会重复数量1
示例i选择x 3次和y 2
X3 2年 1Y 1Y
//if it's the first item
if ( !isset ($_SESSION['Cart']))
{
$CartItem = array ($I_ID,$I_Name,$I_Price,$I_img,$quantity);
$_SESSION['Cart'][] = $CartItem;
header('Location:salad.php');
}
//if the session contains items check if the item already exist
else if (isset ($_SESSION['Cart']))
{
foreach( $_SESSION['Cart'] as $y )
{
if( $y[1] == $I_Name )
{
$_SESSION['Cart'][$i][4]++; //increment quantity
header('Location:salad.php');
break;
}
else{
$CartItem = array($I_ID,$I_Name,$I_Price,$I_img,$quantity);
$_SESSION['Cart'][] = $CartItem;
header('Location:salad.php');
}
$i++;
}
}
>
答案 0 :(得分:1)
响应在这里:
{
foreach( $_SESSION['Cart'] as $y )
{
if( $y[1] == $I_Name )
{
$_SESSION['Cart'][$i][4]++; //increment quantity
header('Location:salad.php');
break;
}
else{
$CartItem = array($I_ID,$I_Name,$I_Price,$I_img,$quantity);
$_SESSION['Cart'][] = $CartItem;
header('Location:salad.php');
}
$i++;
}
}
如果第一项与os $ i_NAME不同,则添加一个项目,这就是为什么你有很多项目。
我会做类似的事情:
{
$addItem = true;
foreach( $_SESSION['Cart'] as $y )
{
if( $y[1] == $I_Name )
{
$_SESSION['Cart'][$i][4]++; //increment quantity
$addItem = false;
header('Location:salad.php');
break;
}
$i++;
}
if($addItem){
$CartItem = array($I_ID,$I_Name,$I_Price,$I_img,$quantity);
$_SESSION['Cart'][] = $CartItem;
header('Location:salad.php');
}
}
}
你可以通过参考& $ y更好地渲染它,而不是使用$ i ++;