PHP 7.4 中的数组扩展运算符
发表于 作者: Paul Redmond
数组表达式中扩展运算符支持的 RFC 投票结果压倒性地支持在 PHP 7.4 中添加此功能。
参数解包的扩展运算符支持最初出现在 PHP 5.6 中,此 RFC 将其使用扩展到数组;支持Traversable的数组和对象都可以扩展。以下是 RFC 中的一个基本示例
$parts = ['apple', 'pear'];$fruits = ['banana', 'orange', ...$parts, 'watermelon'];// ['banana', 'orange', 'apple', 'pear', 'watermelon'];
以下是一些其他示例
$arr1 = [1, 2, 3];$arr2 = [...$arr1]; // [1, 2, 3]$arr3 = [0, ...$arr1]; // [0, 1, 2, 3]$arr4 = array(...$arr1, ...$arr2, 111); // [1, 2, 3, 1, 2, 3, 111]$arr5 = [...$arr1, ...$arr1]; // [1, 2, 3, 1, 2, 3] function getArr() { return ['a', 'b'];}$arr6 = [...getArr(), 'c']; // ['a', 'b', 'c'] $arr7 = [...new ArrayIterator(['a', 'b', 'c'])]; // ['a', 'b', 'c'] function arrGen() { for($i = 11; $i < 15; $i++) { yield $i; }}$arr8 = [...arrGen()]; // [11, 12, 13, 14]
不支持字符串键;您只能使用索引数组。RFC 作者对键支持的解释如下
为了使行为与参数解包一致,不支持字符串键。一旦遇到字符串键,就会抛出一个可恢复的错误。
相关:PHP 批准短箭头函数
要了解此已接受提案的完整详细信息,请查看PHP: rfc:spread_operator_for_array。我们要感谢 CHU Zhaowei 编写了此 RFC(以及所有参与的人)。我们认为这将是 PHP 的一个绝佳补充!