PHP语言的数组解包(Unpacking)

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

huoxiaoqiang的头像huoxiaoqiang

发表回复

登录后才能评论
分享本页
返回顶部