【问题标题】:Removing a certain number out of a session array in PHP从 PHP 中的会话数组中删除某个数字
【发布时间】:2017-01-11 08:56:12
【问题描述】:

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

            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 是否包含删除变量并设置会话,一旦我这样做了,我检查数组是否包含放在 URL 中的数字,如果是,我将启动一个 for 循环并检查会话商店项目的键索引是否等于 URL 变量,如果是,我想删除它,但是如果我使用 array_splice,突然它们都消失了,这是因为我正在使用的函数吗?还是中断没有正确执行?

【问题讨论】:

  • $_SESSION['shopitems'] = null 将清除所有 shopitems 数组。您只需要清除所需的项目就像这样$_SESSION['shopitems'][$i] = null

标签: php arrays session-variables


【解决方案1】:

为什么不试试array_search()unset()?这更容易,请查看下面的代码并根据您的情况进行调整:

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

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

var_dump($array);

【讨论】:

  • 谢谢你的回答,我没有考虑过使用array_search函数,我最近开始使用PHP所以对我来说还是有点新!
【解决方案2】:

您可以像这样格式化$_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']])

【讨论】:

    猜你喜欢
    • 2015-08-29
    • 1970-01-01
    • 2021-10-29
    • 2014-10-08
    • 1970-01-01
    • 2011-01-14
    • 1970-01-01
    • 2015-08-12
    • 1970-01-01
    相关资源
    最近更新 更多