我正在运行PHP 5.3.0。我发现,只有当表达式的第一个字符是$
时,卷曲字符串语法才起作用。有没有办法包含其他类型的表达式(函数调用等)?PHP卷积字符串语法问题
简单的例子:
<?php
$x = '05';
echo "{$x}"; // works as expected
echo "{intval($x)}"; // hoped for "5", got "{intval(05)}"
我正在运行PHP 5.3.0。我发现,只有当表达式的第一个字符是$
时,卷曲字符串语法才起作用。有没有办法包含其他类型的表达式(函数调用等)?PHP卷积字符串语法问题
简单的例子:
<?php
$x = '05';
echo "{$x}"; // works as expected
echo "{intval($x)}"; // hoped for "5", got "{intval(05)}"
号只有各种形式的变量可以使用可变的取代基取代。
看看这个链接的代码LINK
例,
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.";
?>
有不同的东西,你可以用大括号实现,但它是有限的,这取决于你如何使用它。
<?php
$x = '05';
echo "{$x}";
$a = 'intval';
echo "{$a($x)}";
?>
聪明......如果我对气味不过敏,我会使用它:) – zildjohn01 2010-05-06 16:27:22
<?php
class Foo
{
public function __construct() {
$this->{chr(8)} = "Hello World!";
}
}
var_dump(new Foo());
一般来说,你不需要括号周围变量,除非你需要强制PHP对待的东西作为一个变量,在其正常的解析规则,否则可能不会。最大的是多维数组。 PHP的解析器对于决定什么是变量和什么不是,所以需要大括号来强制PHP查看剩余的数组元素引用:
<?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
yes。但为什么?生产美味的意大利面条? – 2010-05-06 16:22:45