我在这里有一些代码,如下所示:
if (isset($_SESSION['addToCart'])) {
foreach ($_SESSION["addToCart"] as &$value){
if ($value['titel'] == $titel){
$value['aantal'] = $aantal;
if($value['aantal'] == 0){
unset($value);
}
}
}
}
所以当'aantal'= 0时,我想要删除该记录,但它不会只返回结果而'aantal'为0而不是从会话中删除的记录。 谁知道我做错了什么?
答案 0 :(得分:1)
根据PHP文档(http://php.net/manual/en/function.unset.php),通过引用传递的变量仅在本地上下文中销毁。试试$value = null;
答案 1 :(得分:0)
你的问题可能源于$ value是一个值变量,$ _SESSION [“addToCarT”] [current_index]的副本。您应该将$ _SESSION [“addToCart”] [current_index]设置为null或取消设置,而不是在有限范围内的副本变量。
答案 2 :(得分:0)
从manual:“当您取消设置引用时,您只需断开变量名称和变量内容之间的绑定。这并不意味着变量内容将被销毁。”
你想做这样的事情:
foreach ($_SESSION['addToCart'] as $key => &$value) {
if ($value['aantal'] == 0) {
unset($_SESSION['addToCart'][$key]);
}
}
将其视为文件系统的符号链接。当您销毁符号链接时,它不会销毁它链接到的文件。