【发布时间】:2012-05-19 10:01:53
【问题描述】:
我环顾四周,但找不到对我的 $_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);
【问题讨论】:
-
请修正您的代码的第一行,使其可读。
-
实际上不需要第一行。然而,这是一个非常奇怪但很酷的问题..
$_SESSION['resentConfirmation']['id']在某种程度上指的是第一个索引,这就是第一个字符发生变化的原因,那么为什么 ['id'] 会引用 [0].. 也许你设置了它在某些时候通过引用? -
不要滥用
@,它会抑制您可能关心的警告,并且会对性能造成很大影响。如果您正确检查输入,则代码中的任何功能都不应出现异常。有一些例外情况,@很有用,但即便如此它也很可疑。 -
PHP 5.3.8 返回
Array ( [resendConfirmation] => Array ( [function] => resend [id] => 8 ) ) -
整个项目都使用了会话初始化(前 8 行)。我在其他任何地方都没有这个问题...
标签: php multidimensional-array session-variables associative-array