我有一个名为:
$_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));
像
这样使用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
怎么样:
$keys = array(0,1);
$_SESSION['A'] = array_intersect_key($_SESSION['A'], array_flip($keys));
这是概念证明。
您将无法仅取消设置数组中的某些值。相反,只需保存这些变量的值,取消设置整个数组,然后重置值。
// 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
);
你
甚至可以使用array_splice()
$_SESSION['A']=array_splice($_SESSION['A'], 2);
试试这个
$_SESSION['A'] = array();
unset($_SESSION['A']);