Включить ключ массива в качестве значения для другого значения массива того же многомерного массива - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь включить ВСЕ значения индекса как часть значения другого индекса того же массива, например: синтаксис неправильный

const CONST_ARRAY = array("update"  => "require" . ['c', 'd'],
                          "require" => ['a', 'b']);

Чтобы это выглядело так:

const CONST_ARRAY = array("update"  => ['a', 'b', 'c', 'd'],
                          "require" => ['a', 'b']);

Возможно ли это в PHP или Laravel?

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Это почти невозможно (кроме как объявить снаружи как в паблорском ответе), но я нашел способ:
Вам нужно будет использовать define(), поскольку синтаксис const выдаст ошибку в этом решении. Вам также необходимо объявить ссылочный массив перед передачей его по ссылке на array_merge().

Рабочий пример:

<code>define('CONST_ARRAY', [
    "require" => ($require = ['a', 'b']),
    "update"  => array_merge(($arr = &$require), ['c', 'd'])
]);

// Output
echo '<pre>' . print_r(CONST_ARRAY, true) . '
';

Этот синтаксис не так прост в использовании. Я пытался со ссылкой и оператор распространения (без успеха) как:

"update"  => [...&$require, 'c', 'd']

Примечание:
Это, вероятно, не то, чтобы использовать в реальной жизни. Этот ответ получил справку от PHP: массив с самообращающимися ссылками принял ответ.

0 голосов
/ 29 июня 2018

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

Вам необходимо установить require значения и затем использовать их. Например:

$require = ['a', 'b'];
const CONST_ARRAY = array("update"  => [...$require, 'c', 'd'],
                          "require" => $require);

Если ваша версия PHP не поддерживает ..., используйте array_merge

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...