开发者

PHP curly string syntax question

开发者 https://www.devze.com 2022-12-29 04:18 出处:网络
I\'m running PHP 5.3.0. I\'ve found that the curly string syntax only works when the first character of the expression is $. Is there a way to include other types of expressions (function calls, etc)?

I'm running PHP 5.3.0. I've found that the curly string syntax only works when the first character of the expression is $. Is there a way to include other types of expressions (function calls, etc)?

Trivial example:

<?php
$x = '05';
echo "{$x}"; // works as expected
echo "{intval($x)}"; // hoped for "5", got "{intval开发者_运维知识库(05)}"


<?php
$x = '05';
echo "{$x}";
$a = 'intval';
echo "{$a($x)}";
?>


No. Only variables of various forms can be substituted using variable substitution.


take a look at this link LINK

Example of the code,

Similarly, you can also have an array index or an object property parsed. With array indices, the closing square bracket (]) marks the end of the index. For object properties the same rules apply as to simple variables, though with object properties there doesn't exist a trick like the one with variables.

<?php
// These examples are specific to using arrays inside of strings.
// When outside of a string, always quote your array string keys 
// and do not use {braces} when outside of strings either.

// Let's show all errors
error_reporting(E_ALL);

$fruits = array('strawberry' => 'red', 'banana' => 'yellow');

// Works but note that this works differently outside string-quotes
echo "A banana is $fruits[banana].";

// Works
echo "A banana is {$fruits['banana']}.";

// Works but PHP looks for a constant named banana first
// as described below.
echo "A banana is {$fruits[banana]}.";

// Won't work, use braces.  This results in a parse error.
echo "A banana is $fruits['banana'].";

// Works
echo "A banana is " . $fruits['banana'] . ".";

// Works
echo "This square is $square->width meters broad.";

// Won't work. For a solution, see the complex syntax.
echo "This square is $square->width00 centimeters broad.";
?>

there are different things you can achieve with the curly brace, but it is limited, depending on how you use it.


<?php
class Foo
{
    public function __construct() {
        $this->{chr(8)} = "Hello World!";
    }
}

var_dump(new Foo());


Generally you don't need the braces around variables, unless you need to force PHP to treat something as a variable, where its normal parsing rules otherwise might not. The big one is multidimensional arrays. PHP's parser is non-greedy for deciding what's a variable and what isn't, so the braces are necessary to force PHP to see the rest of the array element references:

<?php

$arr = array(
    'a' => array(
         'b' => 'c'
    ), 
);

print("$arr[a][b]"); // outputs:  Array[b]
print("{$arr[a][b]}"); // outputs: (nothing), there's no constants 'a' or 'b' defined
print("{$arr['a']['b']}"); // ouputs: c
0

精彩评论

暂无评论...
验证码 换一张
取 消