2

アイテムがカートに追加されると、アイテム ID とそのアイテムの数量が表示されるはずです。この場合、数量のみがセッションから解析されます。アイテムIDが表示されていません。また、別のアイテムが追加された場合、カートには別の数量の 2 番目のアイテムが表示されます。

<?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 />";
        }
    }
}
?>

助言がありますか?ありがとう

4

1 に答える 1

0

array_splice にエラーがあります: arrays are indexed starting from 0.foreach ($arr as $index=>$key) 構文の使用を妨げているのは何ですか? そして、少なくともそのサンプルでは $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;
?>
于 2013-03-16T20:16:16.893 に答える