php会话变量多维关联数组问题

时间:2012-05-10 19:09:15

标签: php multidimensional-array session-variables associative-array

我环顾四周,但无法找到我的$ _SESSION变量中发生的事情的解释。

@ob_start();
$k=@ob_get_contents();
@ob_end_clean();
@session_start();
unset($s,$m);
$m1 = explode(" ", microtime());
$stime = $m1[1] + $m1[0];
echo $k;

$_SESSION['resendConfirmation']['function'] = 'resend';
$_SESSION['resendConfirmation']['id'] = '8';                

print_r($_SESSION);

输出:

Array ( [resendConfirmation] => 8esend ) 

为什么要替换字符串?我以前从未遇到过这个问题。

我想要的是:

Array([resendConfirmation] => Array(
                             [id] =>8
                             [function} => resend
                             )
)

我从来没有遇到过这种情况,我完全糊涂了!

更新 的 为了回应@DanRedux,我已经改为两个不存在的变量名,以便将参考值排除在等式之外,仍然是相同的结果......

$_SESSION['resendConfirmation']['tweak'] = 'resend';
$_SESSION['resendConfirmation']['tweak2'] = '8';

同样的结果:(

是否找到了resendConfirmation并且没有找到任何网站范围内的查询,但是一旦我更改了该数组名称,它一切都有效,令人困惑,但已修复......

$_SESSION['reConfirm']['function'] = 'resend';
$_SESSION['reConfirm']['id'] = '8';             

print_r($_SESSION);

2 个答案:

答案 0 :(得分:6)

您认为多维数组实际上并非如此。真正发生的是:

您认为数组实际上是一个字符串。之后,您尝试以字符串形式访问该字符串。您正在尝试访问不存在的元素id。 PHP总是试图比它应该更聪明,只是说:好吧我会假设你的第一个索引。所以基本上会发生什么:

<?php
$notAnArray = 'somestring';
$notAnArray['id'] = '8'; 

var_dump($notAnArray); // 8omestring

这就是您在开发计算机上should always enable error_reporting的原因:

error_reporting(E_ALL | E_STRICT);
ini_set("display_errors", 1);

并且从不使用@来阻止错误。在某些情况下,您可以使用@,但这实际上不是其中之一。

答案 1 :(得分:6)

由于我真的不知道代码在这个区块之外的其他类型的恶作剧你给了我们,我会说只是尝试这个:

$_SESSION['resendConfirmation'] = array('id' => 8, 'function' => 'resend');

如果这也失败了,那么除了你发布的内容之外还有其他事情要发生。祝你好运!