из руководства:
The keys in the $_SESSION associative array are subject to the same limitations as regular variable names in PHP, i.e. they cannot start with a number and must start with a letter or underscore. For more details see the section on variables in this manual.
Использование чисто цифровых клавиш в сеансе не будет работать. Если он числовой, вы можете попробовать поставить перед ним подчеркивание.
РЕДАКТИРОВАТЬ: Начиная с PHP 5.5.9 в октябре 2015 года, это, кажется, все еще верно, несмотря на то, что руководство больше не появляется.
Тестовый код:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
session_start();
$_SESSION['a123'] = 'a123';
$_SESSION['123'] = '123str';
$_SESSION[455] = '455int';
$_SESSION['_123'] = '_123';
Урожайность:
Примечание: Неизвестно: пропуск цифровой клавиши 123 в поле Неизвестно в строке 0
Примечание: Неизвестно: пропуск цифровой клавиши 455 в поле Неизвестно в строке 0
Тогда var_dump($_SESSION);
показывает только:
array(2) {
["a123"]=>
string(4) "a123"
["_123"]=>
string(4) "_123"
}
Это действительно происходит, когда данные сеанса сериализуются в конце запроса здесь . По-видимому, сам механизм сеанса предотвращает сохранение числовых ключей сеанса в сеансе.