Intereting Posts
Данные Swift httppost, не вставляемые в базу данных MySQL Производительность foreach, array_map с lambda и array_map со статической функцией PHP, передающий $ _GET в командной строке linux Является ли сервер заголовка X-Requested-With достаточным для защиты от CSRF для приложения, управляемого ajax? Присоединить изображение к событию Facebook (php sdk, rest или graph api) Процесс FastCGI превысил настроенный тайм-аут активности Простой скрипт pagination PHP Проблемы с SQL как проблемы Как связать произвольное количество значений с подготовленным оператором в mysqli? Получение имени файла (или удаление файла) с помощью дескриптора файла Должен ли я использовать несколько классов для игры? Есть ли функция PHP для преобразования строки запроса в массив? Создание экземпляра объекта из опубликованных данных – PHP как проверить php-адрес электронной почты с помощью WAMP Каковы различия между «php artisan dump-autoload» и «компоновщик-автозагрузка»,

Можно ли объявить массив как постоянный

Мы можем определить константу типа

define("aconstant','avalue'); 

Не можем ли мы определить массив таким образом, как показано ниже?

 define("months",array("January", "February", ---); 

Solutions Collecting From Web of "Можно ли объявить массив как постоянный"

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.