簡體   English   中英

PHP:取消設置數組$ _SESSION

[英]PHP: unset $_SESSION of array

我有一個名為數組的會話:

$_SESSION['A'];

它包含

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

我可以取消設置$ _SESSION ['A']; 運用

unset($_SESSION['A']);

它取消設置數組中的所有值,如何取消保存在數組中的所有值

$_SESSION['A']; 

exept

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

我已經看到了這個POST

它將所有$ _SESSION設置 unset的值存儲在數組中。 我使用此代碼在數組上取消設置,但不知道如何將其用作數組。

$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']);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM