PHP支持可变参数函数的扩展语法。
在JavaScript中,你可以使用spread语法来执行this:
var a = [1, 2];
var b = [...a, 3, 4];
console.log(b); // [1, 2, 3, 4]
字符串
但是,在PHP中尝试这样做:
$a = [1, 2];
$b = [...$a, 3, 4];
var_dump($b);die;
型
导致此错误:
解析错误:语法错误,意外的“...”(T_ELLIPSIS),应为“]”
在PHP中使用这种方式是否不允许?如果是这样的话,是否有同样优雅的方法来达到同样的效果呢?
4条答案
按热度按时间cgh8pdjw1#
the arrays RFC中的spread运算符已经在PHP 7.4中实现了:
字符串
注意:未打包的数组/遍历只能有整数键。对于字符串键
array_merge()
仍然是必需的。jljoyd4f2#
更新:数组表达式中的Spread运算符
来源:https://wiki.php.net/rfc/spread_operator_for_array
字符串
以
…
为前缀的数组对将在数组定义期间进行扩展。只有实现了Traversable的数组和对象才能展开。举例来说:
型
可以多次进行扩展,并且与参数解包不同,...可以在任何地方使用。可以在spread操作符之前或之后添加普通元素。
Spread运算符适用于数组语法(array())和短语法([])。
也可以立即解包函数返回的数组。
型
我是<---------------End of Update-------------------->说
首先,你引用Variadic函数的数组的意义是错误的。
您可以创建自己的方法来完成此操作,或者您可以更好地使用
array_merge
,如@Mark Baker在您的问题下的评论中所建议的那样。如果你仍然想使用spread operator /
...
,你可以自己实现类似的东西。型
但对我来说,这样做是愚蠢的。因为你仍然需要使用类似array_merge的东西。即使一种语言实现了这一点,在幕后语言使用的是合并函数,其中包含将两个数组的所有元素复制到一个数组中的代码。我写这个答案只是因为你问这样做的方式,优雅是你的要求。
更合理的例子:
型
kokeuurv3#
PHP 7.4以下**
字符串
PHP 7.4及以上版本
型
xxhby3vn4#
在PHP 7.4中,你现在可以在数组表达式中使用扩散运算符。
字符串