2017-07-16 47 views
0

我試圖在數組中保存註冊的產品id會話,並使用id刪除會話數組中的任何產品,但只保存一個,並在我發佈新產品時替換它。我在網上搜索,但仍然無法得到什麼將幫助我解決這個問題。在會話數組中存儲,顯示和刪除項目

<?php 
session_start(); 
//Saving session 
if(!empty($_SESSION["items"])){ 
$_SESSION["items"] = array(); 
$_SESSION["items"][] = $_POST['product_id']; 
}else{ 
$_SESSION["items"] = $_POST['product_id']; 
} 

//Get one session 
echo $_SESSION["items"][$_POST['product_id']]; 

//Delete one session 
unset($_SESSION["items"][$_POST['product_id']]); 
?> 

例2

<?php 
session_start(); 
$product_id = '300'; 
$itemID = 'C'; 
if (!isset($_SESSION['items'])) { 
    $_SESSION['items'] = array(); 
    $_SESSION['items'][$itemID] = array('code' => $product_id); 
}else{ 
    $_SESSION["items"][$itemID][] = $product_id; 
} 
echo $_SESSION["items"]['A']['code']; // This is not showing anything 
var_dump($_SESSION["items"]); // below array is what i get 
?> 

array(3) { ["A"]=> array(1) { [0]=> string(3) "100" } ["B"]=> array(1) { [0]=> string(3) "200" } ["C"]=> array(1) { [0]=> string(3) "300" } } 

請任何人都可以幫助我如何我能得到這個權利

+0

@mickmackusa我有一個新的保存,當打印var_dump它顯示項目的數組,但它不能當我需要一個項目。請我可以再次更新我的問題,讓你看看它嗎? – Peter

+0

@mickmackusa請參閱我的問題的當前版本 – Peter

+0

@mickmackusa我已修復它現在正在工作,問題來自'$ _SESSION [「items」] [$ itemID] []'但我仍然發現另一個問題。當我嘗試回顯'$ _SESSION [「項目」] ['C'] ['code']'它將只打印3而不是300 – Peter

回答

0

例如代碼:

$product_id = '300'; 
$itemID = 'C'; 
if (!isset($_SESSION['items'])) { 
    $_SESSION['items']=[]; 
} 
$_SESSION["items"][$itemID]['code']=$product_id; 
var_export($_SESSION["items"]); 

輸出:

array (
    'C' => 
    array (
    'code' => '300', 
), 
) 

每個添加$product_id將具有code的鍵。該子數組將在$itemID之內,其將在items之內,其將在$_SESSION之內。

0

當在你的會話沒有任何項目,將其保存在$ _SESSION [」項目]。而當其中有一個項目時,您將創建一個新數組來保存它,並刪除舊數值,並將新項目保存到新數組中。

所以在你的會話中只有一個項目或數組有一個項目或沒有項目。

只需將您的if語句替換爲此,以避免您可以添加@作爲分配的警告,或者測試它是否在賦值之前設置。

$_SESSION["items"][] = $_POST['product_id']; 
+0

我已經做了,但仍然沒有顯示任何東西 – Peter

+0

請我更新我的問題與另一個代碼,我嘗試使用,但仍然不工作 – Peter