0

我有类,每个类都有一个与日期相关的成员变量,它总是具有相同的命名格式 -field_{$node->type}_date

例如,如果我的节点类型是“汽车”,则日期字段将被命名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']--它可以正常工作。只是当我动态创建字段名称时,我遇到了这个问题。

对此有任何解决方案,我的语法不正确吗?

4

2 回答 2

5

您需要将键值括起来,{}因为它是一个动态分配的变量。

在你的第二行,你有$node->$date_field_key['und'][0]['value']你应该有的地方:

$node->{$date_field_key}['und'][0]['value']

注意{}周围的date_field_key

祝你好运!

于 2012-08-12T20:00:39.733 回答
2

没有理由保留变量:

$array = $this->$date_field_key;
$value = $array['und'][0]['value'];

如果你让它发挥作用,我们就可以讨论更高级的话题。

于 2012-08-12T20:03:04.403 回答