愚蠢的';重要';关于php$\u会话数组的问题
我有两个文件将某些内容放入$\u会话数组中。 file1.php愚蠢的';重要';关于php$\u会话数组的问题,php,arrays,session,Php,Arrays,Session,我有两个文件将某些内容放入$\u会话数组中。 file1.php <?php session_start(); $_SESSION[] = 'Hi'; echo '<pre>'; print_r($_SESSION); echo '</pre>'; 以及类似于file1的file2.php Array ( [0] => Hi [1] => There! ) 我错了吗 我必须提到,我收到通知:Unknown跳过第0行Unknown中
<?php
session_start();
$_SESSION[] = 'Hi';
echo '<pre>';
print_r($_SESSION);
echo '</pre>';
以及类似于file1的file2.php
Array
(
[0] => Hi
[1] => There!
)
我错了吗
我必须提到,我收到通知:Unknown跳过第0行Unknown中的数字键0。
我的php.ini中的register_globals被设置为Off
正如我在你们的评论中看到的,file2打印了一个由2个项目组成的数组,而对于其他人(如我)来说,“hi”项目丢失了。这种情况似乎会发生,但对于Marc B则不会发生,除非我们使用数字作为会话数组的索引,而不是字符串
对于Marc B,会话的行为与我预期的一样。你能在这里发布你的php.ini吗?所以我可以比较一下你的和我的?你没有给
$\u SESSION
合适的键。不,应该可以。事实上,如果你一直在重新加载file1,你会得到一系列的“Hi”、“Hi”、“Hi”等等。。数组项。有什么特别的原因吗
Array
(
[0] => there!
)
我已经测试了你的代码。当我启动file1.php时,我有以下几点:
Array
(
[greet]=> hi
)
Array
(
[greet] => hi
[meet] => there!
)
请注意:未知跳过第0行未知中的数字键0
之后,我转到file2.php,我有以下内容:
Array
(
[greet]=> hi
)
Array
(
[greet] => hi
[meet] => there!
)
同样的通知。简单地说,回答你的问题你错了:)。
如果在会话变量中添加索引(“问候”和“见面”),这将是第1页的输出:
<?php
session_start();
$_SESSION['0'] = 'Hi';
echo '<pre>';
print_r($_SESSION);
echo '</pre>';
That prints
Array
(
[0] => Hi
)
当您使用file2.php时,您会:
<?php
session_start();
$_SESSION['1'] = 'There!';
echo '<pre>';
print_r($_SESSION);
echo '</pre>';
Now this prints
Array
(
[0] => Hi
[1] => There!
)
文件1:
超全局数组,如$\u SESSION
不是普通数组。您应该在$\u会话
中存储一个数组,如下所示:
文件1:$\u会话['foo'][]='Hi!'代码>
文件2:$\u会话['foo'][]='there'代码>经验是最好的老师。这是一个非常简单的问题,您可以试一试……好吧,当然我已经测试过了:)但是,当我在file2中看到的只是一个数组([0]=>那里!)。我开始怀疑我使用这个阵列的方式。通常,如果我定义了一个数组$a=array(),那么我可以通过执行[]=0;一个[]='Hello'…,但它似乎与$\u会话数组不同。如果我重新加载file1.php,我会得到everytime数组([0]=>Hi)。我想知道为什么在会话丢失之前,0会一直处于Hi状态,请查看1,2,3 print\r($\u session)如果您只得到一个条目,那么您的会话不会在请求之间保留。检查会话cookie是否在每个页面请求之间正确运行服务器->您->服务器。如果你每次都得到一个不同的会话ID,那么它就是一个新的空白会话,这解释了为什么只有一个“嗨”,这正是我所经历的。系统上的会话文件为空。但我认为这不是应该的。可能php.ini中有问题?我在谷歌上搜索了一些类似的东西,发现了一些关于register\u globals的东西,在我的环境中设置为Off。register\u globals应该总是关着的。这是一个可怕的想法,主要的安全漏洞,将在未来的php版本中删除。如果您的会话文件为空,则说明您的cookie设置不正确,并且您每次都在创建一个新会话。这只是我举的一个例子,因为我得到了一个奇怪的会话行为。它不起作用:(似乎如果我使用数字索引,例如0,1,甚至“0”,则会话不会被保留。而如果我使用索引,例如“0”,“1”,则事情似乎会起作用。有什么想法吗?是的,它们与普通数组不同。我不知道……可能是因为我使用了更复杂的方式(数组数组…),谢谢!
<?php
session_start();
$_SESSION['0'] = 'Hi';
echo '<pre>';
print_r($_SESSION);
echo '</pre>';
That prints
Array
(
[0] => Hi
)
<?php
session_start();
$_SESSION['1'] = 'There!';
echo '<pre>';
print_r($_SESSION);
echo '</pre>';
Now this prints
Array
(
[0] => Hi
[1] => There!
)