繁体   English   中英

从PHP的会话数组中删除特定数量

[英]Removing a certain number out of a session array in PHP

我所有的“商店商品”旁边都有一个按钮,可以删除其中一个商店商品,但是我需要它仅删除一个商店商品,而不是删除整个数字数组,我认为这可以通过使用break语句来实现当我找到要删除的号码时,它会删除所有号码。

            if (isset($_GET['remove']) && isset($_SESSION['shopitems'])) {
            if (in_array($_GET['remove'], $_SESSION['shopitems'])) {
                for ($i = 0; $i < sizeof($_SESSION['shopitems']); $i++) {
                    if ($_SESSION['shopitems'][$i] == $_GET['remove']) {
                        $shopArray = $_SESSION['shopitems'];
                        if(sizeof($shopArray) == 1) {
                            $_SESSION['shopitems'] = null;
                            $_SESSION['added'] = null;
                        } else {
                            array_splice($shopArray, $i, $i);
                            $_SESSION['shopitems'] = $shopArray;
                        }
                        break;
                    }
                }
            }
        }

在这里,我检查URL是否包含remove变量并设置了会话,一旦完成此操作,我将检查数组是否包含URL中放入的数字,如果是,我将启动for循环并检查是否会话商店项目的关键索引等于URL变量,如果要删除它,那么,如果我使用array_splice,突然它们都消失了,这是因为我正在使用的功能吗? 还是中断执行不正确?

为什么不尝试使用array_search()unset()呢? 更简单,请看下面的代码,使其适应您的情况:

$array = [1, 5, 6, 12];
$wantToRemove = 5;

$key = array_search($wantToRemove, $array);
unset($array[$key]);

var_dump($array);

您可以这样设置$_SESSION['shopitems']格式:

$_SESSION['shopitems'] = array (
  "item_id" => "item_info",
  "item2_id" => "item2_info",
  ...
)

unset($_SESSION['shopitems'][$_GET['remove']])

您的代码可能是:

if (isset($_GET['remove']) && isset($_SESSION['shopitems']))
   if (isset($_SESSION['shopitems'][$_GET['remove']]))
      unset($_SESSION['shopitems'][$_GET['remove']])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM