2010-05-06 7 views
4

Je cours PHP 5.3.0. J'ai trouvé que la syntaxe de chaîne bouclée ne fonctionne que lorsque le premier caractère de l'expression est $. Est-il possible d'inclure d'autres types d'expressions (appels de fonction, etc.)?PHP question de syntaxe chaîne bouclée

exemple Trivial:

<?php 
$x = '05'; 
echo "{$x}"; // works as expected 
echo "{intval($x)}"; // hoped for "5", got "{intval(05)}" 
+2

oui. mais pourquoi? pour produire de délicieux spaghettis? –

Répondre

2

No. Seules les variables de différentes formes peuvent être substitués en utilisant la substitution de variable.

2

jeter un oeil à ce lien LINK

Exemple de 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."; 
?> 

il y a différentes choses que vous pouvez réaliser avec l'accolade, mais il est limité, selon la façon dont vous l'utilisez .

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

Clever ... Je l'utiliserais si je n'étais pas allergique à l'odeur :) – zildjohn01

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

var_dump(new Foo()); 
0

En général, vous ne avez pas besoin des accolades autour des variables, à moins que vous devez forcer PHP pour traiter quelque chose comme une variable, où ses règles d'analyse syntaxique normale autrement peut-être pas. Le grand est un tableau multidimensionnel. L'analyseur de PHP n'est pas gourmand pour décider ce qui est une variable et ce qui ne l'est pas, donc les accolades sont nécessaires pour forcer PHP à voir le reste des références de l'élément tableau:

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