数组值被循环中的新值覆盖

时间:2014-06-04 16:38:53

标签: php arrays session

我花了30分钟的时间在这个网站上寻找这个问题的答案,但是我似乎试图解决这个问题。

在PHP代码块的末尾。我创建了一个名为" checkout"的会话数组。在哪里我想存储每个项目的ID。然后将其传递到结帐页面,用户将看到他们订购的内容及其详细信息的摘要。

当我来到结帐页面时,我似乎只能将最后一个$ item_id添加到购物车中以显示

我认为每次循环运行时,$ item_id值都会被写入" checkout"数组而不是添加到数组的末尾。但我只是不确定如何解决它。

我们将非常感谢您提供的任何帮助,因为我现在已经坐了3个小时试图解决这个问题。

<?php

$cartOutput ="";
$cartTotal = "0";
$totalVat = "0";


if (!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1) {
$cartOutput = "<h2 align='center'>Your Shopping cart is empty</h2>";
} else {
$i = 0;
foreach ($_SESSION["cart_array"] as $each_item){

    $item_id = $each_item['item_id'];
    $sql = mysql_query("SELECT * FROM estock WHERE stockno='$item_id' LIMIT 1");
    while ($row = mysql_fetch_array($sql)){
        $product_name = $row["description"];
        $price = $row["price"];
        $details = $row["details"];
    }


    $pricetotal = $price * $each_item['quantity'];
    $cartTotal = $pricetotal + $cartTotal;
    $totalVat = $cartTotal * 1.175;
    //Table 
    $cartOutput .= '<tr>';
    $cartOutput .= '<td> <a href="product.php?id=' . $item_id . '">' . $product_name . '</a><br /><img src="inventory_images/' . $item_id . '.jpg" alt="' . $product_name . '" width="40" height="52" border="1" />  </td>';
    $cartOutput .= '<td>'.$details.'</td>';
    $cartOutput .= '<td>£'.$price.'</td>';
    $cartOutput .= '<td>'.$each_item['quantity'].'</td>';
    $cartOutput .= '<td>£'.$pricetotal.'</td>';
    $cartOutput .= '<td><form action="cart.php" method="post"><input name="deleteBtn' . $item_id . '" type="submit" value="X" /><input name="index_to_remove" type="hidden" value="' . $i . '" /></form></td>';
    $cartOutput .= '</tr>'; 



    $_SESSION["checkout"] = array();
    $_SESSION["checkout"][] = $item_id;
    $i++;
    if ($i++ > 3) break;

}   

}

?>

下面你可以看看我在checkout.php页面上检索数组的工作

然后我在表格中回显$ cartOutput。

foreach ($_SESSION["checkout"] as $itemid){
    $cartOutput = "";
    $item_id = $itemid;
    $sql = mysql_query("SELECT * FROM estock WHERE stockno='$item_id' LIMIT 1");
    while ($row = mysql_fetch_array($sql)){
        $item_id = $row["stockno"];
        $product_name = $row["description"];
        $price = $row["price"];
        $details = $row["details"];
    }

    $cartOutput .= '<tr>';
    $cartOutput .= '<td>'.$item_id.'</td>';
    $cartOutput .= '</tr>'; 
}
?>

1 个答案:

答案 0 :(得分:1)

问题出在这一行

$_SESSION["checkout"] = array();

将此行放在主foreach循环之外,并在循环中添加数组中的值。因为每次创建新数组时都会丢失旧值。

相关问题