$ object-> {0}究竟做了什么?

时间:2016-01-22 06:40:27

标签: php

我在this answer代码

中看到了
$tmpNode = parent::addChild($name,null,$namespace);
$tmpNode->{0} = $value;

我很好奇->{0}实际上做了些什么?这是哪种PHP语言结构?它是否引用$tmpNode的第一个属性而不使用其名称?

更新

到目前为止,我已经看到了答案,但我正在寻找PHP语言手册的参考资料,该手册解释了花括号的这种用法。当我在PHP Manual中搜索curly时,唯一的点击是page about strings,其中仅在变量和复杂表达式的上下文中解释了卷曲。我不清楚这种语言允许卷曲文字。

1 个答案:

答案 0 :(得分:1)

中的括号{}也用于解析复杂代码。以此为例:

$t = 0;

$$t = 5;

echo ${0}; //outputs 5

或者这个:

${0} = 65;

echo ${0}; //outputs 65

但如果你试试这个:

$0 = 65;

echo $0;
你会得到:

  

解析错误:语法错误,意外的'0'(T_LNUMBER),期待变量(T_VARIABLE)或'$'

与对象属性相同:

$obj = new stdClass();

$obj->{1} = "Hello world";
echo $obj->{1}; //outputs "Hello world"

Complex (curly) syntax