Это прекрасно работает:PHP новичок: не может использовать константу для определения массива
$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',
);
Но это бросает: Ошибка анализа: синтаксическая ошибка, неожиданная '['
Что я делаю неправильно?
«Значение постоянных;. Только скалярных и нулевые значения разрешены скалярные значения являются целыми числами, с плавающей точкой, строка или логические значения. Можно определить константы ресурсов, однако это не рекомендуется и может вызвать непредсказуемое поведение ». – Flosculus
@Flosculus. Он не хотел использовать константу как массив, но это значение. Допустим, у вас есть класс с свойством (array) = 'public $ _arr = array (...);' и в другом файле 'define ('BLA', '_arr');'. OP хочет делать '$ obj -> _ arr = ...', но используя константу value => '$ obj-> BLA =' –
Если 'FIELD_TIME' является константой класса, не следует ли ее обращаться статически, как' EntityClass :: FIELD_TIME'? – Flosculus