2

Я огляделся вокруг, но не могу найти объяснения тому, что происходит в моих переменных $ _SESSION.php session variable многомерный ассоциативный массив проблема

@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 
          ) 
) 

Я никогда не имел это произойдет раньше, я совершенно запутался!

UPDATE В ответ на @DanRedux я изменился до двух несуществующих имен переменных взять реферирование из уравнения, все тот же результат ...

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

Same результат :(

ли были найдены по всему сайту запрос о resendConfirmation и ни один, но как только я изменить это имя массива, все это работало, сбитый с толку, но фиксировано ...

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

print_r($_SESSION); 
+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 всегда старается быть умнее, чем нужно, и просто говорит: «Хорошо, я предполагаю, что вы имели в виду первый индекс. Поэтому в основном то, что случается:

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

И никогда ошибки Подавить с помощью @. Ну, есть ситуации, когда вы можете использовать @, но это действительно не один из них.

Смежные вопросы