Выражение, возвращающее массив с добавленным значением в переполнении стека

я имею

$whitelist = array ("a", "b", "c", "d");

глобальный белый список допустимых значений определенной переменной $ _POST. Я использую следующее выражение для получения увеличенного белого списка с определенным дополнительным значением («е»)

array_merge($whitelist, array("e"))

(Я передаю это в белую функцию). Но это кажется довольно сложным.

Мне интересно, есть ли лучший способ сделать это? То есть Я ищу выражение, возвращающее массив с добавленным элементом.

Мне известны следующие две конструкции

$whitelist[] = "e";

а также

array_push($whitelist, "e");

но оба они процедурные, изменяют исходный массив, и ни один из них не может быть использован в выражении.

Возможное выражение также будет

$whitelist + array((max(array_keys($whitelist))+1)=>"e")

но это еще более громоздко, чем метод array_merge.

0

Решение

На самом деле это возможно, но только с неудобным условием:

PHP определяет union оператор массива ($a + $bгде оба $a а также $b являются массивами), который делает то, что вы ищете. Проверьте эту страницу для объяснения: http://php.net/manual/en/language.operators.array.php

Однако есть одно досадное условие: наборы ключей массивов должны быть непересекающимися. Что на самом деле имеет смысл, если подумать. Бот для вашего примера это может быть немного неудобно: «простые» скалярные массивы делают по умолчанию не есть непересекающиеся наборы ключей, если вы не позаботитесь об этом.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]