2011-12-09 33 views
3

我读的PHP文件,我看到了这一点:PHP - 如何正确使用大括号和变量?

class foo{ 
     var $bar = 'I am a bar'; 
    } 

    $foo = new foo(); 
    $identity = 'bar'; 

    echo "{$foo->$identity}"; 

我看见有人写这样的:

if (!isset($ns->job_{$this->id})){ 
    //do something 
} 

但是,当我使用此代码试过,它没有工作:

$id1 = 10; 

$no = 1; 

echo ${id.$no}; 

你们可以告诉我为什么它不起作用,什么时候可以正确使用大括号?

+0

您的最后一个示例工作正常并打印出10.您是否在5.0之前的PHP版本中? – Borodin

+0

@Borodin我使用PHP 5.3.8 – hungneox

回答

4

Live example

支架可以在对象类型中使用,例如,以模拟数组索引。假设$arr是一个数组类型和$obj的对象,我们有:

$arr['index'] === 
$obj->{'index'} 

你可以把它更多的乐趣,例如:

$arr["index{$id}"] === 
$obj->{"index{$id}"} 

更:

$arr[count($list)] === 
$obj->{count($list)} 

编辑:您的问题 - variable of variable

// Your problem 
$id1 = 10; 
$no = 1; 
$full = "id{$no}"; 

var_dump($$full); // yeap! $$ instead of $ 
+0

[Live example](http://codepad.viper-7.com/iOnnzI)添加。 ;) –

0

你在做什么期待

$id = 10; 
$no = 1; 
echo "${id}.${no}"; // prints "10.1" 
+0

对不起,我想打印$ id1 1是可变的。 – hungneox