2016-10-05 176 views
1

我有一个多维数组,我可以通过FOR循环遍历并返回值以输入数据库。 问题出现在用户删除一个项目后,我使用unset从$ _SESSION [cart]数组中取出。具体来说,如果是2号线的车,我会用PHP从多维数组中获取值

unset($_SESSION[cart][2]); 

现在我可以不再使用FOR循环,因为i的值在for循环在他们的差距使用。

原始阵列将是:

$_SESSION['cart'][1] $_SESSION['cart'][2] $_SESSION['cart'][3]

之后从购物车中删除第2行(它可以是任何线,这是一个例子):

$_SESSION['cart'][1] $_SESSION['cart'][3]

这就是数组的结构:

$_SESSION['cart'][$lineId] = array('stockNumber' => $stockNumber, 'description' => $description, 'masterPrice' => $masterPrice); 

$ lineId是购物车中的行项目

我目前检索使用这个循环从购物车中的数据:

for ($i = 1, $howMany = count($_SESSION['cart']); $i < $howMany+1;) { 
$stk_code = $_SESSION['cart'][$i]["stockNumber"]; 
$description = $_SESSION['cart'][$i]["description"]; 
$unitPrice = $_SESSION['cart'][$i]["masterPrice"];} 

我需要理解这一点帮助和方式循环无论订单项编号如何都可以通过该数组。我无法知道购物车中有多少物品或多少物品被拿出。任何帮助,将不胜感激。

+2

'foreach'也许使用的foreach代替。 – bishop

+0

删除后,如果你让你的$ _SESSION ['cart']数组array_values($ _ SESSION ['cart'])并尝试....它将重新索引你的数组.. –

回答

1

您可以循环

$_SESSION['cart'][1] = array('stockNumber' => 1, 'description' => 'test', 'masterPrice' => 115); 

    foreach ($_SESSION['cart'] as $value) { 
     $stk_code = $value["stockNumber"]; 
     $description = $value["description"]; 
     $unitPrice = $value["masterPrice"]; 
    } 
+0

如果这不起作用让我知道我将再次修改上面的代码... –

+0

它的工作原理非常完美,我挂断了行号,并确保我控制了每一行,实质上我是这样做的,但没关系。通过使用var_dump运行此操作并与FOR循环进行比较,并实际查看记事本中的输出后,我了解了循环如何“查看”数据。 - 也许我应该先做,谢谢 – user1946891