я имею
$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.
На самом деле это возможно, но только с неудобным условием:
PHP определяет union
оператор массива ($a + $b
где оба $a
а также $b
являются массивами), который делает то, что вы ищете. Проверьте эту страницу для объяснения: http://php.net/manual/en/language.operators.array.php
Однако есть одно досадное условие: наборы ключей массивов должны быть непересекающимися. Что на самом деле имеет смысл, если подумать. Бот для вашего примера это может быть немного неудобно: «простые» скалярные массивы делают по умолчанию не есть непересекающиеся наборы ключей, если вы не позаботитесь об этом.
Других решений пока нет …