假设我有这个特定的会话变量$_SESSION['cart_'.$itemid]
。
是否可以对会话变量进行排序并找到带索引'cart_'.$itemid
的一次并取消设置?
答案 0 :(得分:7)
不确定。你可以做点什么
foreach ($_SESSION as $key=>$val) {
// Look for "cart_" at the front of the array key
if (strpos($key, "cart_") === 0) {
unset($_SESSION[$key]);
}
}
或使用array_keys()
同样的事情:
foreach (array_keys($_SESSION) as $key) {
// Look for "cart_" at the front of the array key
if (strpos($key, "cart_") === 0) {
unset($_SESSION[$key]);
}
}
附录
如果我可以提出设计建议,如果你有能力改变这种结构,我建议将这些购物车项目存储为数组。然后,数组将项目ID包含在其中作为值。
// Updated after comments....
$_SESSION['cart'] = array();
// Add to cart like this:
$_SESSION['cart'][$itemId] = $new_quantity;
这样可以更容易地执行以下操作:
foreach ($_SESSION['cart'] as $item=>$quantity) {
// process the cart
}
答案 1 :(得分:2)
$matches = preg_grep('/^cart_/', array_keys($_SESSION));
foreach ($matches as $match) {
unset($_SESSION[$match]);
}
答案 2 :(得分:1)
只有一个项目存储在$ SESSION ['cart '中。 $ itemId]除非你改变$ itemId的内容。
无论如何,确定你可以解决这个问题:
if (isset($_SESSION['cart_' . $itemId])) { // don't need this if you are iterating through $_SESSION
unset($_SESSION['cart_' . $itemId]);
}