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
    }

PHPフィドル

于 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 に答える