所以我有一个购物车创建问题,大部分代码都在工作,只是最后部分For For each循环不被调用。我相信问题是某种方式,它使用的数组被覆盖。
快速了解正在发生的事情。
商店项目是由foreachloop创建的(为了避免混淆,我将其称为FOR1),它有多个选项,保存每个FOR1项目信息的数组的创建仅在提交按钮上创建,因为这是将商品添加到购物车的时间。
数据需要存储在会话中。 (*已在页面顶部调用启动会话功能)
if(isset($_POST["submit_1"])){
$color = $_POST['color_select'];
$size = $_POST['size_select'];
$price = $_POST['price'];
$range = $_POST['range'];
$item_array = array(0 => array('i_color' => $color, 'i_size' => $size, 'i_price' => $price, 'i_range' => $range));
$_SESSION["item"] = $item_array;
}
购物车然后检测到项目已添加到会话阵列并相应地显示它。然后通过另一个foreach循环(FOR2)中的$ _SESSION [" item"]数组调用许多项目。
if(empty($_SESSION["item"])){
echo "the cart is empty";
}
else{
foreach($_SESSION['item'] as $key){
echo $key["i_range"]; // this is actually inside a styled div
echo $key["i_color"]; // this is actually inside a styled div
}
}
代码用于显示submit_1按钮选择的项目,并在整个会话期间保持持久性(*即离开并返回页面$ SESSION [" item"]保留在数组中)。但是它只显示1项。再次单击该按钮或单击其他商店项目时,它仅显示该项目,并且不会向FOR2功能添加新项目。
我假设问题是每次单击按钮时数组都会被覆盖。或者我误解了提交按钮功能,因为所有项目都使用submit_1标记。在这种情况下,每次按下时如何动态创建新的提交按钮?
**我还有一个删除项功能,可以取消设置成功删除数组项的$ item_array,以便购物车再次为空。
更新 根据下面的答案,您需要添加的附加步骤是将foreach循环嵌套在另一个foreach循环中。像这样。
foreach($_SESSION['item'] as $key){
foreach($key as $list){
echo $list["i_color"];
echo $list["i_range"];
}
}
答案 0 :(得分:1)
试试这个:
if(isset($_POST["submit_1"])){
$color = $_POST['color_select'];
$size = $_POST['size_select'];
$price = $_POST['price'];
$range = $_POST['range'];
$item_array = array('i_color' => $color, 'i_size' => $size, 'i_price' => $price, 'i_range' => $range);
$_SESSION["item"][] = $item_array;
}