繁体   English   中英

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

[英]php session variable multidimensional associative array issue

我环顾四周,但找不到我的$ _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);

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

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

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

var_dump($notAnArray); // 8omestring

这就是您应该始终在开发计算机上启用error_reporting的原因:

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

永远不要使用@抑制错误。 那么在某些情况下你可以使用@ ,但这确实不是其中之一。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM