为什么我不能将整数用作PHP $ _SESSION数组中的索引?

时间:2011-01-01 15:51:39

标签: php

例如:

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

我想将会话数组索引存储为数组索引。所以o / p是:

Array(
[1] => 'username'
)

3 个答案:

答案 0 :(得分:9)

$_SESSION只能用作关联数组。

你可以这样做:

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

就个人而言,我只是坚持使用关联数组。

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

或者

$_SESSION['username_id'] = 23;

答案 1 :(得分:5)

我怀疑这可能是因为$ _SESSION数组纯粹是一个关联数组。另外,正如PHP manual所说:

  

$ _SESSION关联中的键   数组也是一样的   作为常规变量名称的限制   在PHP中,即他们不能以a开头   数字,必须以字母或开头   下划线。

顺便提一下,您是否检查过错误日志中是否有任何NOTICE级错误? (您可能必须启用此级别。)尝试使用数字键很可能会引发错误。

答案 2 :(得分:0)

您也可以采用这种方法来保存数组维度:

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

可能如下所示:

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

而不是:

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

使用另一个数组维度。