Wednesday 9 January 2019

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

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...