我有2个文件放在$ _SESSION数组中。 file1.php
<?php
session_start();
$_SESSION[] = 'Hi';
echo '<pre>';
print_r($_SESSION);
echo '</pre>';
打印
Array
(
[0] => Hi
)
与file1
类似的file2.php<?php
session_start();
$_SESSION[] = 'There!';
echo '<pre>';
print_r($_SESSION);
echo '</pre>';
我想首先转到file1,然后转到file2。 在file2中打印$ _SESSION应输出
Array
(
[0] => Hi
[1] => There!
)
我错了吗?
我要提到的是我收到通知:第0行的Unknown中未知的跳过数字键0。 我的php.ini中的register_globals设置为Off。
正如我在你的评论中看到的那样,file2打印了一个包含2个项目的数组,而对于其他人(比如我),'hi'项目会丢失。这似乎发生了,但不是对于Marc B,只有当我们使用数字作为会话数组的索引而不是字符串时。
对于Marc B,会话的行为符合我的预期。你能在这里发布你的php.ini吗?所以我可以将你与我的进行比较吗?
答案 0 :(得分:5)
像$_SESSION
这样的超级全局不是正常的数组。你应该在$_SESSION
内存储一个数组,如下所示:
文件1:$_SESSION['foo'][] = 'Hi!';
文件2:$_SESSION['foo'][] = 'there';
答案 1 :(得分:0)
您没有给$_SESSION
相应的密钥。
答案 2 :(得分:0)
不,那应该有效。事实上,如果你只是不断重新加载file1,你只需要获得一系列的“Hi”,“Hi”,“Hi”等数组条目。
答案 3 :(得分:0)
你有什么特别的原因吗
$_SESSION[]='Hi' instead of $_SESSION["Greet"]='Hi'?
我已经测试了你的代码。当我启动file1.php时,我有以下内容:
Array
(
[0] => hi
)
带有以下注意事项:第0行的未知中未知的跳过数字键0 之后我继续使用file2.php我有以下内容:
Array
(
[0] => there!
)
同样的通知。只是回答你的问题你错了:)。 如果您将索引(分别为“greet”和“meet”)添加到会话变量,那么这将是第1页上的输出:
Array
(
[greet]=> hi
)
当你继续使用file2.php时,你会得到:
Array
(
[greet] => hi
[meet] => there!
)
答案 4 :(得分:-1)
文件1:
<?php
session_start();
$_SESSION['0'] = 'Hi';
echo '<pre>';
print_r($_SESSION);
echo '</pre>';
That prints
Array
(
[0] => Hi
)
和file2.php类似于file1但会话索引不同
<?php
session_start();
$_SESSION['1'] = 'There!';
echo '<pre>';
print_r($_SESSION);
echo '</pre>';
Now this prints
Array
(
[0] => Hi
[1] => There!
)