Skip to content

emka.web.id

Menu
  • Home
  • Indeks Artikel
  • Tutorial
  • Tentang Kami
Menu

PHP Cookbook: Interpolating Functions and Expressions Within Strings

Posted on March 07, 2012 by Syauqi Wiryahasana
Problem You want to include the results of executing a function or expression within a string. Solution Use the string concatenation operator (.), as shown in Example 1-27, when the value you want to include can’t be inside the string. Example 1-27. String concatenation [sourcecode language="php"] <?php print 'You have '.($_REQUEST['boys'] + $_REQUEST['girls']).' children.'; print "The word '$word' is ".strlen($word).' characters long.'; print 'You owe '.$amounts['payment'].' immediately'; print "My circle's diameter is ".$circle->getDiameter().' inches.'; ?> [/sourcecode] Discussion You can put variables, object properties, and array elements (if the subscript is unquoted) directly in double-quoted strings: [sourcecode language="php"] <?php print "I have $children children."; print "You owe $amounts[payment] immediately."; print "My circle's diameter is $circle->diameter inches."; ?> [/sourcecode] Interpolation with double-quoted strings places some limitations on the syntax of what can be interpolated. In the previous example, $amounts['payment'] had to be written as $amounts[payment] so it would be interpolated properly. Use curly braces around more complicated expressions to interpolate them into a string. For example: [sourcecode language="php"] <?php print "I have less than {$children} children."; print "You owe {$amounts['payment']} immediately."; print "My circle's diameter is {$circle->getDiameter()} inches."; ?> [/sourcecode] Direct interpolation or using string concatenation also works with heredocs. Interpolating with string concatenation in heredocs can look a little strange because the closing heredoc delimiter and the string concatenation operator have to be on separate lines: [sourcecode language="php"] <?php print <<< END Right now, the time is END . strftime('%c') . <<< END but tomorrow it will be END . strftime('%c',time() + 86400); ?> [/sourcecode] Also, if you’re interpolating with heredocs, make sure to include appropriate spacing for the whole string to appear properly. In the previous example, Right now the time has to include a trailing space, and but tomorrow it will be has to include leading and trailing spaces. See Also For the syntax to interpolate variable variables (such as ${"amount_$i"}), see Recipe 5.4; documentation on the string concatenation operator at http://www.php.net/language.operators.string.
Seedbacklink

Recent Posts

TENTANG EMKA.WEB>ID

EMKA.WEB.ID adalah blog seputar teknologi informasi, edukasi dan ke-NU-an yang hadir sejak tahun 2011. Kontak: kontak@emka.web.id.

©2024 emka.web.id Proudly powered by wpStatically