2

我有一个名为:

$_SESSION['A'];

它包含

$_SESSION['A'][0] = 'A';
$_SESSION['A'][1] = 'B';

我可以取消设置$_SESSION['A']; 使用

unset($_SESSION['A']);

它取消设置数组中的所有值我如何取消设置存储在

$_SESSION['A']; 

除了

$_SESSION['A'][0];
$_SESSION['A'][1];

我看过这个帖子

它取消了所有$_SESSION存储在数组中的部分。我使用此代码在数组上取消设置它,但我不知道如何将它用作数组。

$keys = array('x', 'y');
$_SESSION = array_intersect_key($_SESSION, array_flip($keys));
4

5 回答 5

2

像这样使用array_slice

$_SESSION['A'] = array_slice($_SESSION['A'], 0, 2);

更新:

此外,对于非顺序索引,我们可以创建这个函数:

  function array_pick($picks, $array)
    {
     $temp = array();
        foreach($array as $key => $value)
        {
            if(in_array($key, $picks))
            {
                $temp[$key] = $value;
            }
        }
     return array_values($temp);// or just $temp to keep original indexes
    }

PHPFiddle

于 2013-10-27T09:10:27.373 回答
2

怎么样:

$keys = array(0,1);
$_SESSION['A'] = array_intersect_key($_SESSION['A'], array_flip($keys));

是概念证明

于 2013-10-27T09:24:17.670 回答
0

您将无法仅取消设置数组中的某些值。相反,只需保存这些变量的值,取消设置整个数组,然后重置这些值。

// Save existing values
$saved_var1 = $_SESSION["A"][0];
$saved_var2 = $_SESSION["A"][1];

// Unset the entire array
unset( $_SESSION["A"] );

// Set the values by the saved variables
$_SESSION["A"] = array(
  $saved_var1,
  $saved_var2
);
于 2013-10-27T09:04:45.553 回答
0

你甚至可以使用array_splice()

$_SESSION['A']=array_splice($_SESSION['A'], 2);
于 2013-10-27T09:13:16.983 回答
-3

尝试这个

$_SESSION['A'] = array();
unset($_SESSION['A']);
于 2013-10-27T09:09:53.523 回答