PHP对象属性表示法

时间:2014-04-21 11:56:44

标签: php object drupal properties notation

我突然卡在这里:

  $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']

1 个答案:

答案 0 :(得分:2)

因为您的对象没有名为" field_phone['und'][0]['value']" 的属性。它有一个名为" field_phone" 的属性,该数组的索引名为" und&# 34; 这是一个具有索引0等的数组。但是符号$obj->{$var}没有解析并递归地解析名称,因为它不应该。它只是在给定对象上查找给定名称的属性,仅此而已。它不像复制和粘贴源代码那样代替$var