Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从另一个数组存储多维数组并在foreach循环中调用它_Php_Arrays_Session - Fatal编程技术网

Php 从另一个数组存储多维数组并在foreach循环中调用它

Php 从另一个数组存储多维数组并在foreach循环中调用它,php,arrays,session,Php,Arrays,Session,所以我有一个购物车创建问题,大部分代码都在工作,只是For-each循环的最后一部分没有被调用。我相信问题在于它使用的数组被覆盖了 快速概述正在发生的事情。 商店商品是由foreachloop创建的(为了避免混淆,我称之为FOR1),它有多个选项,保存每个FOR1商品信息的数组的创建仅在submit按钮上创建,因为这是将商品添加到购物车的时间 数据需要存储在会话中。(*已在页面顶部调用启动会话功能) 然后,购物车检测到某个项目已添加到会话数组中,并相应地显示该项目。然后,它调用另一个foreac

所以我有一个购物车创建问题,大部分代码都在工作,只是For-each循环的最后一部分没有被调用。我相信问题在于它使用的数组被覆盖了

快速概述正在发生的事情。

商店商品是由foreachloop创建的(为了避免混淆,我称之为FOR1),它有多个选项,保存每个FOR1商品信息的数组的创建仅在submit按钮上创建,因为这是将商品添加到购物车的时间

数据需要存储在会话中。(*已在页面顶部调用启动会话功能)

然后,购物车检测到某个项目已添加到会话数组中,并相应地显示该项目。然后,它调用另一个foreach循环(FOR2)中的$\u会话[“item”]数组中的任意多个项

代码用于显示由submit_1按钮选择的项目,并在整个会话期间保持持久性(*即离开并返回页面$session[“item”]保留在数组中)。但是,它仅显示1项。再次单击按钮或单击另一个店铺项目时,它仅显示该项目,不会向FOR2功能添加新项目

我假设问题是每次单击按钮时数组都会被覆盖。或者我误解了submit按钮的功能,因为所有项目都使用submit_1标记。在这种情况下,我如何在每次按下提交按钮时动态创建一个新的提交按钮

**我还有一个remove item函数,用于取消设置$item_数组,该数组成功地删除了数组项,从而使购物车再次为空

更新 根据下面的答案,您需要添加的额外步骤是将foreach循环嵌套在另一个foreach循环中。像这样

foreach($_SESSION['item'] as $key){ 
    foreach($key as $list){
    echo $list["i_color"]; 
    echo $list["i_range"]; 
    }
}
试试这个:

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

所以这在某种程度上是可行的。它添加并存储新项目,但不显示信息。我需要在任何地方添加额外的制动器吗?我试过if(empty($\u SESSION[“item”][]){echo“购物车是空的”}“”@Paddy no。这看起来不错:if(empty($\u SESSION[“item”]){echo“购物车是空的”}foreach循环中有什么内容吗?我假设括号是对多维数组的引用。所以数组正在调用,只是元素没有被正确调用,并且显示为空。foreach($_SESSION['item']作为$key){echo“范围是“..$key['i_range];}//键是blank@Paddy我需要看看阵列的样子。你会在你的问题中加入一个打印($\u SESSION['item'])吗?所以在foreach循环的外部是数组([0]=>array([0]=>array([i\u color]=>Shiney Gold[i\u size]=>1.50[i\u price]=>79.95[i\u range]=>Cavu 1)),在foreach循环的内部也是一样。所以$key没有链接到session[“item”]
foreach($_SESSION['item'] as $key){ 
    foreach($key as $list){
    echo $list["i_color"]; 
    echo $list["i_range"]; 
    }
}
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;
}