存储来自另一个数组的多维数组并在foreach循环中调用它

时间:2014-10-10 10:08:34

标签: php arrays session

所以我有一个购物车创建问题,大部分代码都在工作,只是最后部分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"]; 
    }
}

1 个答案:

答案 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;
}