有一个foreach
循环迭代属性。如果对象具有下一个属性,则代码会为此属性指定值:
foreach ($record as $attribute=>$value) {
if ($object->has_attribute($attribute)) {
$object->$attribute = $value;
}
}
我不明白为什么我们必须使用$object->$attribute
代替$object->attribute
?后者对我来说似乎更合乎逻辑,因为它看起来像基本的OOP,但在这种情况下,脚本不起作用。
我只想知道原因。请给我一些见解。
答案 0 :(得分:1)
这是一项名为variable variables的功能:
也可以使用变量属性名访问类属性。 变量属性名称将在范围内解析 打电话。例如,如果你有一个表达式 如
$foo->$bar
,则将检查$bar
及其本地范围 value将用作$foo
属性的名称。这也是 如果$bar
是数组访问,则为true。
答案 1 :(得分:0)
基本上,这是一个动态归因:
$attribute = 'toto';
$object->$attribute = 'tata';
echo $object->toto; // will display 'tata'