2

私はそれを見回しましたが、私の$ _SESSION変数で何が起こっているのか説明できません。PHPセッション変数多次元連想配列の問題

@ob_start(); 
[email protected]_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 
          ) 
) 

が、私はこれは前に起こっていたことがありません、私は完全に混乱しています!私は、方程式のうち、まだ同じ結果を参照を取るために2つ存在しない変数名に変更しました@DanReduxに対応して

UPDATE ...

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

同じ結果:(

resendConfirmationのサイト全体のクエリを行なったし、何も見つからなかったが、私はその配列名を変更したら、それはすべてが働いて、困惑したが、固定した...

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

print_r($_SESSION); 
+1

コードの1行目を読み取り可能にしてください。 – Madbreaks

+1

最初の行は実際には必要ありません。 $ _SESSION ['resentConfirmation'] ['id'] 'は何とか最初のインデックスを参照しているので、最初の文字が変更されているのはなぜですか?なぜ['id']でしょうか? [0]を参照してください。 – DanRedux

+8

'@'の使い方を悪用しないでください。気になる警告を抑止し、パフォーマンスが大幅に低下します。入力を正しくチェックすると、コード内のどの関数も誤動作することはありません。 '@'が役に立ちますが、それでも疑わしい場合はいくつかの例外があります。 – Halcyon

答えて

6

私は本当にあなたが私は代わりに、これを試してみ言う私たちを与えた他のどのようなペテンの種類のコードは、このブロックの外までです知らないので:

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

これも失敗した場合にあっていますあなたが投稿したものの外で何か他のことが起こっている。がんばろう!

+0

何が起こっていたのか分かりませんが、resendConfirmationを参照する必要があります。名前が変更され、すべてが機能しました。 – MaurerPower

6

多次元配列と考えることは実際にはありません。実際に起こるのは次のとおりです。

あなたが考えているのは、実際には文字列です。その後、配列として文字列にアクセスしようとしています。存在しない要素idにアクセスしようとしています。 PHPは常にそれよりもスマートにしようとします。ちょうど言う:OK私はあなたが最初のインデックスを意味すると仮定します。だから、基本的にされて、何が起こるか:

<?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); 

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