Saturday, 13 February 2016

Echoing session variables in php




I know that in php I can put a variable name inside a quoted string when I use echo, but I apparently can't do this with a session variable. Can anyone explain why?



Here is the code, with the "offending" php commented out:




session_start();
$test = 100;
$_SESSION['test'] = 200;
?>


Test



");?>


");?>


");?>


");?>






And the output looks like this:




100

100

200


But if I uncomment the offending code line:




  

");?>




I get no output and the following error:



Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in - on line 14


So I can go on my merry way knowing how to do it correctly (just keep the session variable outside of the double quotes), but I would really like to understand why this doesn't work for session variables.




Thanks!


Answer



Inside a double-quoted string you must enclose a complex variable (array or object property) in {}:



");?>




This isn't an issue with $_SESSION specifically, but any array accessed by quoted keys. Note, that you can include a numerically indexed array value with wrapping in {}, as in "echo $array[2] is two";


No comments:

Post a Comment

c++ - Does curly brackets matter for empty constructor?

Those brackets declare an empty, inline constructor. In that case, with them, the constructor does exist, it merely does nothing more than t...