PHPで、セッション変数の初期化を行いました。
セッションの破棄まではしたくなかったので、
$_SESSION = array();
としました。
セッション変数の初期化は、PHPのマニュアルにサンプルとして書いてある方法です。
セッション変数が連想配列になっているからできる方法です。
php.net
この方法で、予想通りの動作をしました。
unset()では初期化できない?
セッション変数が連想配列なので、空の配列で初期化するというのもいいのですが、変数の削除ならunset()もあります。
php.net
unset()でも初期化できると考えてコードを以下のようにしてみました。
unset($_SESSION);
結果は、unset()を呼び出した直後にvar_dump()で確認するとNULLになっていました。
セッション変数に値を入れると、以前の値が復活していました。
何度試しても同じなので、最初に書いた方法を採用しました。
セッション変数を部分的に割り当てを解除する、
unset($_SESSION['quux']);
は想定どおり値が消えていました。
部分的な割り当て解除できるなら、全ても大丈夫だと思っていましたが、結果は違いました。
思い込みで誤った動作のまま作りこんで、後から修正に時間を費やさないで済むように気をつけます。
sension_unset()の使用経験はありませんが、警告に
$_SESSION スーパーグローバルを使用した セッション変数の登録が不可能になってしまうため、 unset($_SESSION) を使って $_SESSION を完全に unset しないでください。
とあるので、正しくない方法とされているようです。
php.net