Мы можем определить константу типа
define("aconstant','avalue');
Не можем ли мы определить массив таким образом, как показано ниже?
define("months",array("January", "February", ---);
UPDATE: это возможно в PHP 7 ( ссылка )
// Works as of PHP 7 define('ANIMALS', array( 'dog', 'cat', 'bird' )); echo ANIMALS[1]; // outputs "cat"
ОРИГИНАЛЬНЫЙ ОТВЕТ
От php.net …
Значение константы; допускаются только скалярные и нулевые значения . Скалярными значениями являются значения integer, float, string или boolean. Можно определить константы ресурсов, однако это не рекомендуется и может привести к непредсказуемому поведению.
$months = array("January,"February",...)
будет в порядке.
вы можете использовать const для этой цели с PHP 5.6 (через nikic ).
const months = ["January", "February"]; var_dump("January" === months[0]);
Вы можете помещать массивы внутри констант с помощью взлома:
define('MONTHS', serialize(array('January', 'February' ...)));
Но тогда вы должны unserialize()
что постоянное значение, когда это необходимо, и я думаю, это не так полезно.
В качестве альтернативы определите несколько констант:
define('MONTH_1', 'January'); define('MONTH_2', 'February'); ...
И используйте функцию constant()
для поиска значения:
echo constant('MONTH_'.$month);
Нет, ты не можешь. См. PHP: Синтаксис – Руководство
В константах могут содержаться только скалярные данные ( логические, целочисленные, плавающие и строковые ). В качестве ресурса можно определить константы, но его следует избегать, так как это может вызвать неожиданные результаты.
Вы можете использовать формат JSON для хранения массива в строке и затем привязать эту строку к константе.
$months = array("January","February","March"); define('MONTHS', json_encode($months));
Когда вы хотите использовать его:
$months = json_decode(MONTHS);
Если вы должны иметь константу, как насчет использования строки с разделителями aa и взрыва в массив?
define("MONTHS", "January;February;March"); $months = explode(";",MONTHS);
Начиная с PHP 5.6, можно объявлять постоянные массивы . Связанная документация использует пример const ARR = ['a', 'b'];
, Вы также можете выполнить const ARR = array('a', 'b');
, Однако в 5.6 существует нечетная причуда: вы можете объявлять постоянные массивы, используя const
, но не define()
. Это было исправлено в PHP 7.0.