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

Mau*_*wer 2 php associative-array session-variables multidimensional-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);
Run Code Online (Sandbox Code Playgroud)

输出:

Array ( [resendConfirmation] => 8esend ) 
Run Code Online (Sandbox Code Playgroud)

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

因此我想要的是:

Array([resendConfirmation] => Array(
                             [id] =>8
                             [function} => resend
                             )
)
Run Code Online (Sandbox Code Playgroud)

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

更新 为了响应@DanRedux,我已经改为两个不存在的变量名称来引用等式,仍然是相同的结果......

$_SESSION['resendConfirmation']['tweak'] = 'resend';
$_SESSION['resendConfirmation']['tweak2'] = '8';
Run Code Online (Sandbox Code Playgroud)

相同的结果:(

是否找到了全站点查询resendConfirmation和没有找到,但是一旦我更改了这个数组名称,它一切都有效,令人困惑,但已修复......

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

print_r($_SESSION);
Run Code Online (Sandbox Code Playgroud)

Pee*_*Haa 6

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

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

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

var_dump($notAnArray); // 8omestring
Run Code Online (Sandbox Code Playgroud)

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

error_reporting(E_ALL | E_STRICT);
ini_set("display_errors", 1);
Run Code Online (Sandbox Code Playgroud)

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


Emm*_*elG 6

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

$_SESSION['resendConfirmation'] = array('id' => 8, 'function' => 'resend');
Run Code Online (Sandbox Code Playgroud)

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