愚蠢的';重要';关于php$\u会话数组的问题

愚蠢的';重要';关于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中

我有两个文件将某些内容放入$\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中的数字键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!
)