PHP语言的数组解包支持数组或任何实现了 Traversable
接口的对象。
1.解包索引数组
1.1用于变量赋值
$变量名 = [...$索引数组];
//新数组中的元素全部由老数组中的元素组成。
$a1 = [1, 2, 3];
$a2 = [...$a1]; // [1, 2, 3]
//新数组中的部分元素由老数组中的元素组成。
//新老数组无重复元素
$a1 = [1, 2, 3];
$a2 = [0, ...$a1, 4, 5]; // [0, 1, 2, 3, 4, 5]
//新老数组有重复元素,不会去重,仅此复制而已。
$a1 = [1, 2, 3];
$a2 = [1, ...$a1, 2, 3]; // [1, 1, 2, 3, 2, 3]
1.2用于函数实参
具体参考“用于变量赋值”章节。
function f($a, $b) {
echo $a, $b;
}
$arr = [1, 2];
f(...$arr); // 1 2
2.解包关联数组
2.1用于变量赋值
$变量名 = [...$关联数组];
//新数组中的键值对全部由老数组中的键值对组成。
$a1 = ['a' => 1, 'b' => 2];
$a2 = [...$a1]; // ['a' => 1, 'b' => 2]
//新数组中的部分键值对由老数组中的键值对组成。
//新老数组无同名键
$a1 = ['a' => 1, 'b' => 2];
$a2 = [...$a1, 'c' => 3]; // ['a' => 1, 'b' => 2, 'c' => 3]
//新老数组有同名键,后面的键值对会覆盖前面的键值对。
$a1 = ['a' => 1, 'b' => 2];
$a2 = [...$a1, 'a' => 3]; // ['a' => 3, 'b' => 2]
$a1 = ['a' => 1, 'b' => 2];
$a2 = ['a' => 3, ...$a1]; // ['a' => 1, 'b' => 2]
2.2用于函数实参
具体参考“用于变量赋值”章节。
function f($a, $b) {
echo $a, $b;
}
$arr = ['a' => 1, 'b' => 2];
f(...$arr); // 1 2
原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/experience/phpexp/38246.html