这很好用:
$entity->field_time[LANGUAGE_NONE][0] = array(
'value' => date_format($date),
'timezone' => 'UTC',
);
但是我需要让它更通用,以允许不同的字段名称。所以我尝试使用常量:
define('FIELD_TIME', 'field_time');
$entity->FIELD_TIME[LANGUAGE_NONE][0] = array(
'value' => date_format($date),
'timezone' => 'UTC',
);
但这不是针对正确的数组名称,应该是[field_time] [LANGUAGE_NONE] [0]
我也尝试过:
define('FIELD_TIME', 'field_time');
$entity->constant('FIELD_TIME')[LANGUAGE_NONE][0] = array(
'value' => date_format($date),
'timezone' => 'UTC',
);
但是抛出:解析错误:语法错误,意外'['
我做错了什么?
答案 0 :(得分:1)
试试这个
$entity->{FIELD_TIME}[LANGUAGE_NONE][0] = 'something';
是的,只需支持常数!这也适用于函数调用
$entity->{FUNC_NAME_CONST}();
答案 1 :(得分:0)
define('FIELD_TIME', 'field_time');
$entity->constant('FIELD_TIME')[LANGUAGE_NONE][0] = array(
'value' => date_format($date),
'timezone' => 'UTC',
);
这种方式应该可行,但从PHP 5.4开始
否则你还需要一行:
define('FIELD_TIME', 'field_time');
$field_time = constant('FIELD_TIME');
$entity->$field_time[LANGUAGE_NONE][0] = array(
'value' => date_format($date),
'timezone' => 'UTC',
);
http://php.net/manual/en/migration54.new-features.php
添加了函数数组解除引用,例如FOO()[0]。
如果我理解正确,它应该用作:
class Entity {
public $field_time = null;
}
$entity = new Entity();
/**
* Instead of:
* $entity->field_time[LANGUAGE_NONE][0] = array('key' => 'val');
*/
define('FIELD_TIME', 'field_time');
$field_time = constant('FIELD_TIME');
// or $field_time = FIELD_TIME;
$entity->$field_time[LANGUAGE_NONE][0] = array('key' => 'val');
答案 2 :(得分:0)
您无法直接从方法的返回值访问数组。
$entity->constant('FIELD_TIME')[LANGUAGE_NONE][0]
错误,将constant()的返回值首先存储在另一个变量中,并通过该数组访问LANGUAGE_NONE。
答案 3 :(得分:0)
如果我理解你的好,你只需要使用常量来按名称调用正确的数组?
define('FIELD_TIME', 'field_time');
$entity->{FIELD_TIME}[LANGUAGE_NONE][0] = array(
'value' => date_format($date),
'timezone' => 'UTC',
);
如果你有一个名为“field_time”
的声明数组,这对我来说很好