Friday 1 December 2017

Echoing session variables in php

itemprop="text">



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



/>");?>


/>");?>



echo($_SESSION['test']."
");?>


//echo("$_SESSION['test']"."
");?>







And
the output looks like
this:



100


100

200


But
if I uncomment the offending code
line:



 

echo("$_SESSION['test']"." />");?>





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
{}:




echo("{$_SESSION['test']}"." />");?>




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...