Variable substitution provides a convenient way to output variables embedded in string literals. When PHP parses double-quoted or heredoc strings, variable names are identified when a $
character is found and the value of the variable is substituted. The following example shows how:
<?php $num = 3; $vehicle = 'car'; echo "This $vehicle holds $num people"; // prints "This car holds 3 people"
PHP interprets the $
and the following non-space characters as the name of a variable to insert. To include the dollar signs in a double-quoted string you need to escape the variable substitution meaning with the backslash sequence \$
.
Curly braces in string
When the name of the variable is ambiguous, braces {}
can delimit the name as shown in the following example:
<?php $memory = 32; //Error, undefined variable $memoryGB echo "My laptop has $memoryGB of RAM"; // Works: braces are used delimit variable name echo "My laptop has {$memory}GB of RAM";
When the string literal containing the characters $memoryGB
is parsed, PHP tries to substitute the value of the nonexisting variable $memoryGB
. Braces are also used for more complex variables, such as arrays and objects:
<?php $dbQuery = new stdClass(); $dbQuery->count = 10; $arr = ['one'=>1, 'two'=>2]; $planets = ['Earth'=>['dia'=>12756], 'Mars'=>['dia'=>6779]]; //Prints: The first array element value is 1. print "The first array element value is {$arr['one']}."; //Prints: Mars diameter: 6779 print "Mars diameter: {$planets['Mars']['dia']}"; //Prints: There are 10 results ... print "There are {$dbQuery->count} results ...";
Single-quoted (and nowdoc) strings aren’t parsed in the same way as double-quoted strings for variable substitution. For example, the characters $vehicle
and $num
aren’t substituted in the following example:
<?php $num = 3; $vehicle = 'car'; // prints "This $vehicle holds $num people" print 'This $vehicle holds $num people';
Getting Started with PHP: