我有类,每个类都有一个与日期相关的成员变量,它总是具有相同的命名格式 - field_{$node->type}_date
例如,如果我的节点类型为“car”,则日期字段将命名为field_car_date
所以我循环遍历所有节点,我想访问每个节点的日期相关字段。但是我收到了一个错误。这是代码
$date_field_key = 'field_' . $node->type . '_date';
if (isset($node->$date_field_key['und'][0]['value'])) {
由于第二行我收到错误。错误是 - Illegal string offset 'und'
与日期相关的变量是一个数组,它有一个带有'und'键的元素。如果我明确地写出这一行 - $node->field_car_date['und'][0]['value']
- 它运作正常。就在我动态创建字段名称时,我遇到了这个问题。
对此有任何解决方案,我的语法不正确吗?
答案 0 :(得分:5)
您需要在{}
中包围键值,因为它是动态分配的变量。
在第二行中,您应该拥有$node->$date_field_key['und'][0]['value']
:
$node->{$date_field_key}['und'][0]['value']
请注意{}
date_field_key
祝你好运!
答案 1 :(得分:2)
没有理由不用变量:
$array = $this->$date_field_key;
$value = $array['und'][0]['value'];
如果你让它发挥作用,我们就可以讨论更多高级主题。