Почему я не могу использовать intergers как индекс в массиве PHP $ _SESSION?

Например:

$_SESSION['1'] = 'username'; // works $_SESSION[1] = 'username'; //doesnt work 

Я хочу сохранить индекс массива сеанса как индекс массива. Итак, o / p:

 Array( [1] => 'username' ) 

$_SESSION может использоваться только как ассоциативный массив.

Вы могли бы сделать что-то вроде этого, хотя:

 $_SESSION['normal_array'] = array(); $_SESSION['normal_array'][0] = 'index 0'; $_SESSION['normal_array'][1] = 'index 1'; 

Лично я просто придерживался ассоциативного массива.

 $_SESSION['username'] = 'someuser'; 

Или

 $_SESSION['username_id'] = 23; 

Я подозреваю, что это, вероятно, потому, что массив $ _SESSION является просто ассоциативным массивом. Кроме того, как написано в руководстве по PHP :

Ключи в ассоциативном массиве $ _SESSION имеют те же ограничения, что и обычные имена переменных в PHP, т. Е. Они не могут начинаться с числа и должны начинаться с буквы или подчеркивания.

Кстати, проверили ли вы свой журнал ошибок на наличие ошибок уровня уведомления? (Возможно, вам придется включить этот уровень.) Попытка использования числового ключа вполне может вызвать ошибку.

Вы также можете использовать этот подход для сохранения измерения массива:

 $_SESSION['form_'.$form_id] = $form_name; 

который может выглядеть следующим образом:

 $_SESSION['form_21'] = 'Patient Evaluation'; 

в отличие от:

 $_SESSION['form'][21] = 'Patient Evaluation'; 

который использует другое измерение массива.