Переменные Переменные с синтаксисом значений элементов массива - PullRequest
2 голосов
/ 04 июня 2019

Я хочу создать переменную сеанса, но имя переменной сеанса хочу быть динамическим. Поэтому мне нужен правильный синтаксис для имени переменной, которая является переменной $ _SESSION.

Я попробовал приведенный ниже код, который создает переменную с именем переменной и сохраняет ее значение, и она работает просто отлично.

$xvalue = $_SESSION['delivery_id'];
$delivery_string = 'this_delivery_id_' . $xvalue ;
$$delivery_string = $_SESSION['delivery_id'];
echo "Variable name:&nbsp;" . $delivery_string . "<br/>";
echo "Session Variable Value:&nbsp;" . $this_delivery_id_29 . "<br/>";

Вышеприведенный код повторяет 29 для строки 5; желаемый результат.

Поэтому, работая над тем, что работало с переменной переменной, я просто попытался вместо этого сделать имя переменной $ _SESSION.

$value = $_SESSION['delivery_id'];
$xsession = "$_SESSION[\"" . $value . "\"]";  // this gives compilation error so dead stop. I also tried without the escapes and also a dead stop. I also tried escaping the [ and ] and got rid of the compilation error so the code runs but it does not give the desired result.
$$xsession = $_SESSION['delivery_id'];
echo "Variable name:&nbsp;" . $xsession . "<br/>";
echo "Session Variable Value:&nbsp;" . $_SESSION["delivery_id_29"] . "<br/>";

Таким образом, проблема заключается в строке 2 кода.

1 Ответ

0 голосов
/ 04 июня 2019

Проблема возникает из-за попытки интерполировать переменную немного «слишком сложно», если вы укажете $_SESSION[$value], у вас останется строка "$_SESSION[$value]", которая не является допустимым именем переменной - выпытаясь получить доступ к переменной, как если бы она была определена следующим образом: $$_SESSION[$value] = 'foo';.То, что вы хотите сделать, это взять значение этого элемента массива и использовать его в переменной-переменной, что необходимо сделать, сославшись на него.

Кажется, что любой из следующих результатов даст результат, к которому вы стремитесь;прямая переменная переменная:

$value = 'foo';
$_SESSION['foo'] = 'bar';
$bar = 'baz';

echo ${$_SESSION[$value]}; //prints baz

Один с другим шагом, помогая сделать его более понятным:

$identifier = $_SESSION[$value];
echo $$identifier //prints baz

Я не понимаю, что вы будете хранить таким образом, ноВы также можете исследовать альтернативы для достижения более чистого, более прямого подхода.Если вы укажете свое использование за этим, возможно, кто-то сможет предложить альтернативную методологию.

...