- PHP 教程
- PHP - 教程
- PHP - 简介
- PHP - 安装
- PHP - 历史
- PHP - 功能
- PHP - 语法
- PHP - Hello World
- PHP - 注释
- PHP - 变量
- PHP - echo 语句和 print 语句
- PHP - var_dump() 函数
- PHP - $ 和 $$ 变量
- PHP - 常量
- PHP - 魔术常量
- PHP – 数据类型
- PHP - 类型转换
- PHP - 类型戏法
- PHP - 字符串
- PHP - 布尔值
- PHP - 整数
- PHP - 文件和I/O
- PHP – 数学函数
- PHP - Heredoc & Nowdoc
- PHP - 复合类型
- PHP - 文件包含
- PHP - 日期和时间
- PHP - 标量类型声明
- PHP - 返回类型声明
- PHP 运算符
- PHP - 运算符类型
- PHP - 算术运算符示例
- PHP - 比较运算符示例
- PHP - 逻辑运算符示例
- PHP - 赋值运算符示例
- PHP – 字符串运算符
- PHP – 数组运算符
- PHP – 条件运算符示例
- PHP - Spread 运算符
- PHP - Null 合并运算符
- PHP - Spaceship 运算符
- PHP 控制语句
- PHP – 决策
- PHP - If…Else 语句
- PHP - Switch 语句
- PHP – 循环类型
- PHP - For 循环
- PHP - Foreach 循环
- PHP - While 循环
- PHP - do...While 循环
- PHP - Break 语句
- PHP - Continue 语句
- PHP 数组
PHP - Spread 运算符
PHP 将三个点符号 (...) 识别为展开运算符。展开运算符有时也称为 splat 运算符。此运算符首次在 PHP 版本 7.4 中引入。它可以在许多情况下有效地使用,例如解包数组。
示例 1
在下面的示例中,$arr 1 中的元素入到 $arr 2 中其自身元素列表之后。
<?php
$arr1 = [4,5];
$arr2 = [1,2,3, ...$arr1];
print_r($arr2);
?>
它将产生以下输出 -
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)
示例 2
Spread 运算符可以在表达式中多次使用。例如,在下面的代码中,通过展开两个数组的元素来创建第三个数组。
<?php
$arr1 = [1,2,3];
$arr2 = [4,5,6];
$arr3 = [...$arr1, ...$arr2];
print_r($arr3);
?>
它将产生以下输出 -
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
)
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
)
示例 3
请注意,使用 array_merge() 函数可以获得相同的结果,如下所示 -
<?php
$arr1 = [1,2,3];
$arr2 = [4,5,6];
$arr3 = array_merge($arr1, $arr2);
print_r($arr3);
?>
它将产生相同的输出 -
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
)
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
)
但是,使用 (...) 运算符的效率要高得多,因为它避免了函数调用的开销。
示例 4
PHP 8.1.0 还引入了另一个功能,允许在解包参数后使用命名参数。数组中的值将解包到相应的参数中,而不是单独为每个参数提供值,使用 ...(三个点)。
<?php
function myfunction($x, $y, $z=30) {
echo "x = $x y = $y z = $z";
}
myfunction(...[10, 20], z:30);
?>
它将产生以下输出 -
x = 10 y = 20 z = 30
示例 5
在下面的示例中,函数的返回值是一个数组。然后展开并解包数组元素。
<?php
function get_squares() {
for ($i = 0; $i < 5; $i++) {
$arr[] = $i**2;
}
return $arr;
}
$squares = [...get_squares()];
print_r($squares);
?>
它将产生以下输出 -
Array
(
[0] => 0
[1] => 1
[2] => 4
[3] => 9
[4] => 16
)
(
[0] => 0
[1] => 1
[2] => 4
[3] => 9
[4] => 16
)