简体   繁体   English

会话/阵列问题,购物车

[英]Session/Array issue, Shopping cart

When an item is added to the cart the item id and the quantity of that item is supposed to be displayed. 将商品添加到购物车时,应显示该商品的ID和数量。 In this case only the quantity is being parsed from the session. 在这种情况下,仅从会话中解析数量。 the item ID is not being displayed. 没有显示商品ID。 Also when a different item is added the cart should display a second item with a separate quantity. 同样,当添加其他项目时,购物车应显示另一个具有单独数量的项目。

<?php 
session_start();


?>
<?php 
if (isset($_POST['pid'])) {
    $pid = $_POST['pid'];
    $wasFound = false;
    $i = 0;

    if (!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1){
        $_SESSION["cart_array"] = array(1 => array("item_id" => $pid, "quantity" => 1));
    } else {
        foreach ($_SESSION["cart_array"] as $each_item) {
            $i++;
            while (list($key, $value) = each($each_item)) {
                if ($key == "item_id" && $value == $pid) {
                array_splice($_SESSION["cart_array"], $i-1, 1,array(array("item_id" => $pid, "quantity" => $each_item['quantity'] + 1)));
                $wasFound = true;
               }
            }
        }
        if ($wasFound == false) {
        array_push($_SESSION["cart_array"], array("item_id" => $pid, "quantity" => 1));
    }
  }
 }
?>
<?php
if (isset($_GET['cmd']) && $_GET['cmd'] == "emptycart") {
    unset($_SESSION["cart_array"]);
}
?>
<?php
$cartOutput = "";
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) {
        $i++;
        $cartOutput .= "<h2>Cart item $i</h2>";
        while (list($key, $value) = each ($each_item)) {
            $cartOutput .= "key:$value<br />";
        }
    }
}
?>

any suggestions? 有什么建议么? Thanks 谢谢

there's an error in array_splice: arrays are indexed starting from 0. what's stopping you from using foreach ($arr as $index=>$key) syntax? array_splice中存在错误:数组从0开始索引。是什么使您无法使用foreach($ arr as $ index => $ key)语法? and you don't echo $cartOutput at least in that sample. 并且至少在该示例中您没有回显$ cartOutput。

<?php 
session_start();

if (isset($_POST['pid'])) {
    $pid = intval($_POST['pid']);

    if (!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1){
        $_SESSION["cart_array"] = array(1 => array("item_id" => $pid, "quantity" => 1));
    } else {
        $found= false;
        foreach ($_SESSION["cart_array"] as $i => $each_item) {
            if ($each_item["item_id"] == $pid) {
                $_SESSION["cart_array"][$i]["quantity"] ++;
                $found = true;
            }
        }
        if (!$found)  {
                $_SESSION["cart_array"][] = array("item_id"=>$pid, "quantity"=>1);
        }
    }
 }
?>
<?php
if (isset($_GET['cmd']) && $_GET['cmd'] == "emptycart") {
    unset($_SESSION["cart_array"]);
}
?>
<?php
$cartOutput = "";
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) {
        $i++;
        $cartOutput .= "<h2>Cart item $i</h2>";
        while (list($key, $value) = each ($each_item)) {
            $cartOutput .= "key:$value<br />";
        }
    }
}
echo $cartOutput;
?>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM