Переменная Session PHP установлена, но PHP ее не видит. Очень странно - PullRequest
2 голосов
/ 04 февраля 2009

Ладно, может быть, это потому, что я кодирую более 24 часов, и у меня остекленели глаза, но я в тупике Почему это происходит:

<?php
session_start();
$tmp = "index";

echo "A: " . $_SESSION['page_loaded']['index']; // returns 1
echo "B: " . $_SESSION['page_loaded'][$tmp]; // is set, but is empty
?>

Я чувствую, что мне здесь чего-то не хватает, но я не знаю, что.

Ответы [ 5 ]

2 голосов
/ 05 февраля 2009

У меня такое чувство, что вы на самом деле не вырезали и не вставили этот код? Есть ли что-то, что вы пропускаете?

1 голос
/ 04 февраля 2009

Где вы устанавливаете следующее?

$_SESSION['page_loaded'][$tmp];

Следующие работы:

<?php

    session_start();
    $tmp = "index";

    $_SESSION["page_loaded"][$tmp] = "Foo";

    echo "A: " . $_SESSION['page_loaded']["index"]; // foo
    echo "<br/>";
    echo "B: " . $_SESSION['page_loaded'][$tmp]; // foo

?>
0 голосов
/ 04 февраля 2009

вы должны использовать

 $_SESSION['page_loaded']['tmp'] = "index";

вместо

 $tmp = "index";

и для получения значения используйте это

  echo "B: " . $_SESSION['page_loaded']['tmp']; // the output is: B: index

(избавиться от знака доллара $)

0 голосов
/ 04 февраля 2009

Попробуйте использовать:

$tmp = 'index'; // Note the single quotes.
//...
echo "B: " . $_SESSION['page_loaded'][$tmp];

PHP интерпретирует двойные и одинарные строки в кавычках несколько по-разному. Прочитайте эти статьи здесь и здесь , поскольку это может быть тем, с чем вы столкнулись.

ОБНОВЛЕНИЕ: просто чтобы прояснить (учитывая комментарии ниже) мои аргументы, чтобы проверить, влияют ли использование строк в одинарных или двойных кавычках на проблему оригинальных плакатов, показано в примере ниже, где две строки не равны:

$var = 1;

$tmpA = 'index_$var'; // will resolve to index_$var
$tmpB = "index_$var"; // will resolve to index_1

if ( $tmpA === $tmpB)
  echo 'Identical';
else
  echo 'Not Identical!'; // <--- we get this because they are NOT identical.
0 голосов
/ 04 февраля 2009

Попробуйте его с помощью функции var_dump, чтобы увидеть его значение.

...