本篇文章介绍了 PHP 中的扩展运算符。
PHP 扩展运算符
扩展运算符是在 PHP 7.4 中引入的,用于数组表达式。 扩展运算符由三个点...
表示。
扩展运算符展开数组的成员,这意味着如果我们将这三个点放在数组的前缀中,它将在该位置展开值。
例如:
<?php
$names = ["Jack", "John"];
$all_names = ["Mike", "Logan", "Shawn", ...$names]; // Use of the spread operator
print_r($all_names);
?>
上面的代码将使用扩展运算符将数组 $names 的值放入数组 $all_names 中。
查看输出:
Array (
[0] => Mike
[1] => Logan
[2] => Shawn
[3] => Jack
[4] => John )
array_merge()
方法也执行相同的操作,但展开运算符更好,因为它是一种语言构造,总是比方法更好,而且 PHP 还会在编译时优化数组的性能。
我们可以在数组的任何地方使用扩展运算符,例如,在开头、中间或结尾。
让我们看一个例子。
<?php
$names = ["Jack", "John"];
$all_names = ["Mike", ...$names, "Logan", "Shawn" ]; // Use of the spread operator in between
print_r($all_names);
echo "<br>";
$all_names1 = [...$names, "Mike", "Logan", "Shawn" ]; // Use of the spread operator at the begining
print_r($all_names1);
?>
该代码将在不同位置使用展开运算符将 $names 数组插入到 $all_names 数组中。
查看输出:
Array (
[0] => Mike
[1] => Jack
[2] => John
[3] => Logan
[4] => Shawn )
Array (
[0] => Jack
[1] => John
[2] => Mike
[3] => Logan
[4] => Shawn )
扩展运算符可以根据位置、时间、函数或生成器等不同地使用。让我们尝试示例一下 PHP 展开运算符的每种用法。
在 PHP 中多次使用扩展运算符
扩展运算符也可以在一个数组中多次使用。 让我们举个例子。
<?php
$names1 = ["Jack", "John"];
$names2 = ["Mike", ...$names1, "Logan", "Shawn" ]; // Use of the spread operator
$all_names = [...$names1, ...$names2 ]; // Use of the multiple spread operator
print_r($all_names);
?>
上面的代码演示了扩展运算符的多种用途。 查看输出:
Array (
[0] => Jack
[1] => John
[2] => Mike
[3] => Jack
[4] => John
[5] => Logan
[6] => Shawn )
在 PHP 中使用带有函数返回值的展开运算符
例如,如果函数返回一个数组,我们可以在该函数调用中使用扩展运算符将这些值放入数组中。 请参阅示例。
<?php
function get_names()
{
$names = ["Jack", "John"];
return $names;
}
$names1 = ["Mike", "Logan", "Shawn" ];
$all_names = [...$names1, ...get_names() ]; // Use of the multiple spread operator with function call
print_r($all_names);
?>
上面的代码演示了将 PHP 扩展运算符与函数返回值一起使用。
查看输出:
Array (
[0] => Mike
[1] => Logan
[2] => Shawn
[3] => Jack
[4] => John )
在 PHP 中对可遍历对象使用扩展运算符
PHP 扩展运算符也可以用于对象,而不仅仅是数组。 它也可以与可遍历对象一起使用,这意味着实现可遍历接口的对象。
让我们举个例子。
<?php
class Names implements IteratorAggregate
{
private $names = ["Mike", "Logan", "Shawn" ];
public function getIterator()
{
return new ArrayIterator($this->names);
}
}
$names = new Names();
$all_names = [...$names];
print_r($all_names);
?>
上面的代码演示了对可遍历对象使用扩展运算符。
查看输出:
Array (
[0] => Mike
[1] => Logan
[2] => Shawn )
在 PHP 中将扩展运算符与生成器一起使用
展开运算符也可以与生成器函数一起使用。
例如:
<?php
function odd_numbers()
{
for($x =1; $x < 20; $x+=2){
yield $x;
}
}
$odd = [...odd_numbers()];
print_r($odd);
?>
上面的代码创建了一个生成器函数,它生成 1 到 20 之间的奇数,然后使用扩展运算符。
查看输出:
Array (
[0] => 1
[1] => 3
[2] => 5
[3] => 7
[4] => 9
[5] => 11
[6] => 13
[7] => 15
[8] => 17
[9] => 19 )