2

SOを見回しましたが、$_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
                             )
)

私はこれまでこれが起こったことがありません、私は完全に混乱しています!

UPDATE @DanReduxに応答して、方程式から参照を取り除くために、存在しない2つの変数名に変更しましたが、それでも同じ結果になります...

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

同じ結果:(

サイト全体のクエリを実行しましたがresendConfirmation、何も見つかりませんでしたが、その配列名を変更すると、すべて機能し、困惑しましたが、修正されました...

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

print_r($_SESSION);
4

2 に答える 2

6

コードがこのブロックの外側にある他の種類のシェナニガンを本当に知らないので、代わりにこれを試してみてください:

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

これも失敗した場合は、投稿した内容以外に何か他のことが起こっている必要があります。幸運を!

于 2012-05-10T19:22:05.973 に答える
6

多次元配列だと思うのは実際にはそうではありません。実際に起こることは次のとおりです。

配列だと思うのは、実際には文字列です。その後、文字列に配列としてアクセスしようとしています。id存在しない要素にアクセスしようとしています。PHPは常に本来よりも賢くしようとし、次のように述べています。OKあなたが最初のインデックスを意味していると思います。つまり、基本的に何が起こるかは次のとおりです。

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

var_dump($notAnArray); // 8omestring

これが、開発マシンで常にerror_reportingを有効にする必要がある理由です。

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

また、を使用してエラーを抑制しない@でください。使用できる状況もいくつかありますが@、これは実際にはその1つではありません。

于 2012-05-10T19:21:33.273 に答える