2012-06-13 64 views
2

我有一個購物車的會話變量爲:'cart_b_1_1'。如何按元素檢查和取消設置/設置SESSION?

字符串中的字母表示一個類別,整數表示用戶標識&產品ID。

如何檢查已設置的SESSION var的類別以查看它是否與新選擇的類別匹配?

我想確保如果一個項目被添加到SESSION數組中,並且有一個已經存在的相同類別字母的變量,那麼它將被取消設置並有效地替換爲新的選擇。這是爲了將選擇按類別限制爲一個。

感謝您的幫助提前。

+0

您可以在會話中擁有多個值。爲什麼不爲每個值(類別,用戶標識,產品ID)使用變量? – CodeZombie

+0

遍歷$ _SESSION的array_keys,如果找到preg_matches/cart_x_ \ d_ \ d /的關鍵字,則分配新值;否則添加一個新的會話變量。或者,你爲什麼不把它們存儲爲'$ _SESSION [「cart」] [「b」] [1] [1]'? –

回答

2

你應該考慮什麼關聯數組讓你做的迷死advantange:

$_SESSION['categories'][$mycat] = array($user_id, $product_id); 

,只要你設置一個新的類別將覆蓋最後一個辦法。不知道爲什麼你需要的user_id在這一水平,假設整個車屬於一個用戶,我的會話看起來像:

array(
    'user' => $user_id, 
    'cart' => array('catid' => 'prodid', 'catid2', 'prodid2')) 
); 
+0

不知道爲什麼我downvoted ... –

+0

感謝您的評論,我如何在$ _SESSION ['categories'] [$ mycat] = array($ user_id,$ product_id)$ mycat數組中選擇$ user_id? – user1337603

2

您應該使用3個變量而不是1

$_SESSION['category'] = 'cart_b'; 
$_SESSION['user_id'] = 1; 
$_SESSION['product_id'] = 1; 

但只是一般 - 你可以用'_'分隔符將字符串轉換爲數組。

$varArray = explode('_', $_SESSION['var']); 
+0

缺少第1行的單引號 – Gntem

+0

是的,補充說。謝謝 –

0

使用_分解會話變量並檢查第一個元素以找到類別。

$ myarray = explode(「_」,$ _ SESSION ['yourvariablename']);

然後你$ myarray [1]是類別,所以你可以比較和做其他的東西。

這是你想要的嗎?