数组表达式中对展开操作符(Spread Operator)支持的RFC投票是绝大多数人赞同将此功能添加到PHP7.4。
扩展运算符支持参数解包首先存在于PHP5.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的作者对关键的支持做了如下说明:
为了使行为与argument unpacking一致,不支持字符串键。
遇到字符串键后,将抛出可恢复的错误。