使用字符串引用数组时的非法字符串偏移量

时间:2012-08-12 19:58:19

标签: php variables

我有类,每个类都有一个与日期相关的成员变量,它总是具有相同的命名格式 - 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'] - 它运作正常。就在我动态创建字段名称时,我遇到了这个问题。

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

2 个答案:

答案 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'];

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