PHP中返回带附加值数组的表达式

PHP中返回带附加值数组的表达式,php,arrays,expression,Php,Arrays,Expression,我有 某个$u POST变量的允许值的全局白名单。我使用下面的表达式获得一个带有某个额外值e的放大白名单 $whitelist = array ("a", "b", "c", "d"); 我将其提供给一个白名单函数。但这似乎相当复杂 我想知道有没有更好的办法?也就是说,我正在寻找一个表达式,该表达式返回一个带有添加元素的数组 我知道以下两种结构 array_merge($whitelist, array("e")) 及 但两者都是过程性的,修改原始数组,它们都不能用于表达式中 一个可能的表达

我有

某个$u POST变量的允许值的全局白名单。我使用下面的表达式获得一个带有某个额外值e的放大白名单

$whitelist = array ("a", "b", "c", "d");
我将其提供给一个白名单函数。但这似乎相当复杂

我想知道有没有更好的办法?也就是说,我正在寻找一个表达式,该表达式返回一个带有添加元素的数组

我知道以下两种结构

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

但两者都是过程性的,修改原始数组,它们都不能用于表达式中

一个可能的表达方式也是

array_push($whitelist, "e");

但是它甚至比数组合并方法更麻烦。

实际上这是可能的,尽管只有在不方便的情况下:

PHP定义了联合数组操作符$a+$b,其中$a和$b都是数组,可以满足您的需要。请查看此页面以了解说明:


但是有一个恼人的情况:数组键集必须是不相交的。只要你仔细想想,这是有道理的。对于您的示例,这可能有点不方便:简单的标量数组在默认情况下没有不相交的键集,除非您特别注意这一点

那么你在寻找什么呢?一种比array\u merge更简单的方法可能没有。我认为你已经用array\u merge获得了最简单的方法。下面的方法似乎比使用array\u merge更好:$tmp=$whitelist$tmp[]=e;然后使用$tmp而不是表达式使用$array[]=谢谢,但是我已经知道了这个选项-请看我问题的结尾。好的,在问题的这一部分,您的方法很麻烦,因为您试图将union语句与创建合适的精心编制的数组相结合。但这不是工会经营者的错。这是一个如何构造数组的问题。。。如果您真的想定义自己的操作符,那么php就是错误的选择。您应该尝试一种允许运算符重载的硬类型语言。基本上,最后我只是在头脑风暴。我目前使用的是数组合并方式。再次感谢您的回复。
array_push($whitelist, "e");
$whitelist + array((max(array_keys($whitelist))+1)=>"e")