会话变量似乎无法保存

Put*_*nik 7 php time session

相当简单的代码:

<?
session_start();
$_SESSION['t'.time()]     = "ok";
echo "<pre>".print_r($_SESSION, 1)."</pre>";
?>
Run Code Online (Sandbox Code Playgroud)

像预期的那样显示出类似的东西

Array
(
    [t1330966834] => ok
    [t1330966835] => ok
    [t1330966836] => ok
)
Run Code Online (Sandbox Code Playgroud)

3页重新加载后.

让我们改变几个符号:

$_SESSION[time()]     = "ok";
Run Code Online (Sandbox Code Playgroud)

(现在没有't')我希望在重新加载之后会有类似的东西

Array
(
    [t1330966834] => ok
    [t1330966835] => ok
    [t1330966836] => ok
    [1330967020] => ok
    [1330967021] => ok
    [1330967022] => ok
    [1330967023] => ok
)
Run Code Online (Sandbox Code Playgroud)

但实际上结果完全不同:

   Array
    (
        [t1330966834] => ok
        [t1330966835] => ok
        [t1330966836] => ok
        [1330967020] => ok
    )
Run Code Online (Sandbox Code Playgroud)

我们有3个先前的阵列单元格,只有一个"时间"单元格 - 无论您重新加载页面多少次.时间是正确的,它每秒都不同但只有一个没有't'的细胞!我也试过了

$t =time();
$_SESSION[$t]     = "ok";
Run Code Online (Sandbox Code Playgroud)

乃至

$t =intval(time());
$_SESSION[$t]     = "ok";
Run Code Online (Sandbox Code Playgroud)

但它仍然只有一个细胞随着时间的推移.

在2个不同的服务器上测试了php 5.2.13和5.3.10.我究竟做错了什么?

小智 6

$_SESSION关联数组中的键与PHP中的常规变量名称具有相同的限制,即它们不能以数字开头,必须以字母或下划线开头.有关详细信息,请参阅本手册中有关变量的部分.

http://php.net/manual/en/session.examples.basic.php


Lin*_*een 5

当启动error_reporting方式时,您应该注意到:

请注意<file>,line ... session_write_close()::跳过数字键1330967020

不支持会话变量的数字indeces .