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

Jim*_*_CS 0 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'])) {
Run Code Online (Sandbox Code Playgroud)

由于第二行,我收到错误.错误是 - Illegal string offset 'und' 与日期相关的变量是一个数组,它有一个带有'und'键的元素.如果我明确写出这一行$node->field_car_date['und'][0]['value']- 它运作正常.就在我动态创建字段名称时,我遇到了这个问题.

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

Dav*_*vid 5

您需要将键值包围,{}因为它是动态分配的变量.

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

$node->{$date_field_key}['und'][0]['value']
Run Code Online (Sandbox Code Playgroud)

注意{}周围的date_field_key

祝好运!

  • 尝试:`$ node - > {$ date_field_key} ['und'] [0] ['value']`而不是. (3认同)