Unlike a real PHP array, $_SESSION keys at the root level must be valid variable names.
<?php
$_SESSION[1][1] = 'cake'; // fails
$_SESSION['v1'][1] = 'cake'; // works
?>
I imagine this is an internal limitation having to do with the legacy function session_register(), where the registered global var must similarly have a valid name.
$_SESSION
$HTTP_SESSION_VARS [非推奨]
$_SESSION -- $HTTP_SESSION_VARS [非推奨] — セッション変数
説明
現在のスクリプトで使用できるセッション変数を含む連想配列です。 セッション変数の使用法についての詳細は、 セッション関数 のドキュメントを参照ください。
$HTTP_SESSION_VARS は同じ情報を格納していますが、 これはスーパーグローバルではありません ($HTTP_SESSION_VARS と $_SESSION は異なる変数であり、PHP はこれらを異なる変数として扱うことに注意してください)。
変更履歴
| バージョン | 説明 |
|---|---|
| 4.1.0 | $_SESSION が導入され、 $HTTP_SESSION_VARS は非推奨となりました。 |
注意
注意: これは 'スーパーグローバル' あるいは自動グローバル変数と呼ばれるものです。 スクリプト全体を通してすべてのスコープで使用することができます。 関数やメソッドの内部で使用する場合にも global $variable; とする必要はありません。
$_SESSION
Steve Clay
17-Aug-2008 03:28
17-Aug-2008 03:28
jherry at netcourrier dot com
02-Aug-2008 01:16
02-Aug-2008 01:16
You may have trouble if you use '|' in the key:
$_SESSION["foo|bar"] = "fuzzy";
This does not work for me. I think it's because the serialisation of session object is using this char so the server reset your session when it cannot read it.
To make it work I replaced '|' by '_'.
