Попробуйте использовать:
$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.