2013-03-16 80 views
2

當物品添加到購物車時,應該顯示該物品的物品ID和數量。在這種情況下,只會從會話中解析數量。物品ID未顯示。另外,當添加不同的物品時,購物車應該顯示另一個具有單獨數量的物品。會話/數組問題,購物車

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

有什麼建議嗎?謝謝

+0

你在哪裏/如何顯示ID? – 2013-03-16 19:47:44

回答

0

array_splice中有一個錯誤:數組索引從0開始。 什麼阻止你使用foreach($ arr作爲$ 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; 
?>