Замена определения массива в php 5.6

на моем локальном хосте работает PHP7, и я использую функцию define() для определения массива. Это работает нормально.

define('JOBS_CREATORS', ['[email protected]', '[email protected]']);

Как мы знаем, он работает в версии PHP7. Я погуглил и нашел const ключевое слово, которое работает в PHP5.6 или более ранней версии.

Насколько я знаю, const работает только внутри class.

Но я использую WordPress, поэтому мне нужно определить в файле functions.php.

Есть ли другой способ определить массив без использования class?

Если ваш хостинг-провайдер все еще использует PHP 5.6, вам нужно подумать о поиске нового. Даже PHP 7.0 устарел настолько, что уже не поддерживается и считается устаревшим.

Spudley 15.03.2019 11:15

На самом деле, есть и другие PHP-сайты, и им требуется более низкая версия PHP. Вот почему я не могу обновить версию PHP.

Gufran Hasan 15.03.2019 11:16

Исправьте другие сайты, чтобы они не зависели от неподдерживаемых версий PHP, которые не получают исправления безопасности!

Quentin 15.03.2019 11:44

Вот почему такие платформы, как Docker, так хороши. С Docker вы можете запускать каждую из ваших систем в отдельном изолированном контейнере, чтобы все они могли запускать нужную им версию PHP (или любую другую), не мешая друг другу.

Spudley 15.03.2019 12:38
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
4
72
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Это все еще возможно сделать в PHP 5.6, используя ключевое слово const (см. в этом посте):

Константы PHP, содержащие массивы?

const JOBS_CREATORS = ['[email protected]', '[email protected]'];

Спасибо за Ваш ответ. Я пробовал это, но, к сожалению, это не сработало. Это дает ошибку, константное значение не может быть обновлено.

Gufran Hasan 15.03.2019 11:59

можешь показать мне свой код? Конечно, вы не можете ОБНОВИТЬ константу... поэтому она называется константой. Если вам нужно обновить его, вы должны использовать переменную вместо константы

Asped 15.03.2019 12:08
Ответ принят как подходящий

Вы можете обновить свою константу, чтобы вместо этого принимать сериализованный массив.

define('JOBS_CREATORS', serialize(['[email protected]', '[email protected]']));

тогда

if (in_array("[email protected]", unserialize(JOBS_CREATORS))){ ...

если вы собираетесь это сделать, используйте json_encode, а не serialize.

Spudley 15.03.2019 12:38

@Spudley, сериализация работает нормально. Есть ли отличия от json_encode вместо сериализации?

Gufran Hasan 15.03.2019 12:52

Сериализация имеет избыточный вес и слишком сложна (и иногда подвержена дырам в безопасности). Единственный правильный вариант использования для этого - если вы используете функцию сна/пробуждения для сохранения объекта между запусками.

Spudley 15.03.2019 12:56

Спасибо @Spudley за помощь :)

Gufran Hasan 15.03.2019 12:58

@GufranHasan Суть заключалась в сериализации данных, независимо от того, как вы это делаете. json_encode также является формой сериализации. Кстати, WordPress по-прежнему использует serialize для сохранения данных в базе данных.

Taha Paksu 15.03.2019 14:15

Поскольку @Спадли предложил использовать json_encode, а не serialize. Я использовал json_encode и json_decode как:

Определенный:

define('JOBS_CREATORS', json_encode(['[email protected]', '[email protected]']));

Получающий:

echo '<pre>';print_r(json_decode(JOBS_CREATORS)); echo '</pre>';

Но ответ @TahaPaksu тоже полезен.

Спасибо, @Спадли и @TahaPaksu :)

Другие вопросы по теме