我突然卡在这里:
$source = (object) array(
'field_phone' => array(
'und' => array(
'0' => array(
'value' => '000-555-55-55',
),
),
),
);
dsm($source);
$source_field = "field_phone['und'][0]['value']";
dsm($source->{$source_field}); //This notation doesn't work
dsm($source->field_phone['und'][0]['value']); //This does
dsm()
是Drupal开发人员函数,用于调试打印变量,对象和数组。为什么$source
对象无法理解$obj->{$variable}
符号?
注意:未定义的属性:stdClass :: $ field_phone ['und'] ['0'] ['value']
答案 0 :(得分:2)
因为您的对象没有名为" field_phone['und'][0]['value']
" 的属性。它有一个名为" field_phone
" 的属性,该数组的索引名为" und
&# 34; 这是一个具有索引0
等的数组。但是符号$obj->{$var}
没有解析并递归地解析名称,因为它不应该。它只是在给定对象上查找给定名称的属性,仅此而已。它不像复制和粘贴源代码那样代替$var
。