2009-10-16 114 views
1

我正在爲學校作業構建購物車。除了將商品添加到購物車變量之外,我幾乎都有。將項目添加到數組PHP

我建立了我的購物車會話使用:$_SESSION['temp_session'] = array();

,然後,當一個項目被添加到購物車中,這個代碼被執行

if (isset($_POST['addtocart'])) { 
      $item_name = $_POST['item_name']; 
      $price = $_POST['price']; 
      $qty = $_POST['qty']; 

      $newItem = $item_name.":".$price.":".$qty; 
      //echo $newItem; 

      if (isset($_SESSION['shop_session'])) { 
       array_push($shop_session, $newItem); 
       //header('Location: cart.php'); 
       print_r($shop_session); 
      } 
      else { 
       array_push($temp_session, $newItem); 
       //header('Location: login.php?notLoggedIn=true'); 
       print_r($temp_session); 
      } 
     } 

這一切似乎使他能工作正常(我可以打印出$newItem,它包含元素),但是當我嘗試將$newItem添加到$shop_session$temp_session然後將其打印出來時,數組爲空。

這是關於我使用的方式array_push()

感謝

回答

4

是您RegisterGlobals是嗎?如果沒有,你必須使用

  if (isset($_SESSION['shop_session'])) { 
        array_push($_SESSION['shop_session'], $newItem); 
        //header('Location: cart.php'); 
        print_r($_SESSION); 
      } 
      else { 
       array_push($_SESSION['temp_session'], $newItem); 
        //header('Location: login.php?notLoggedIn=true'); 
        print_r($_SESSION); 
      } 
+1

@Anax如果你不不知道這與'register_globals'有什麼關係,那麼你從來沒有遇到過用它編碼過的腳本。 – random

+0

啊,好的,謝謝你們。與print_r($ _ SESSION);我得到:Array([temp_session] => Array([0] => Apocalypso:10.00:2))。所以$ _SESSION是一個數組,並且它內部是另一個名爲temp_session的數組?我如何將temp_sessions複製到shop_session?還有,我想foreach($ _SESSION ['shop_session']作爲$ item)也不起作用嗎? –

+0

@ e.c.ho我最初的印象是,Alexey暗示在register_globals On的時候,每個會話變量都會自動作爲獨立變量提供,我認爲這是不正確的。 – Anax

3

不能鍵入

$_SESSION['temp_session'] = array(); 

,並期望有一個名爲$ temp_session變量。你所擁有的是一個數組($ _SESSION),它包含一個元素(鍵名爲temp_session),它又是一個數組。

爲了有你需要一個額外的行預期的效果,如:

$temp_session = $_SESSION['temp_session']; 

,當你更新,然後再返回到您的會話:

$_SESSION['temp_session'] = $temp_session;