php教程,如何理解使用三个点解包操作运算符?
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
在以前的文章中,苏南大叔描述过nodejs
下的三个点运算符,也就是解包操作。那么,在php
中也存在着非常类似的三个点运算符。本文将从两个角度来描述三个点运算符在php
中的使用方法。
苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验总结。测试环境:win10
,nginx@1.15.11
,php@8.2.10-nts
。
前文回顾
在nodejs
编程语言下的三个点运算符,和php
下的三个点运算符,使用方法上是几乎一致的。参考文章:
主要的使用方式就两种:
- 解包数组。
- 函数定义里面表示参数不限数量。
- 其它
数组解包
测试代码:
function test($n1, $n2)
{
echo "第一个参数:", $n1, PHP_EOL;
echo "第二个参数:", $n2, PHP_EOL;
$args = func_get_args(); // 重新获得封包数组
var_dump($args);
var_dump(...$args); // 再次解包
}
$list = ["苏", "南", "大", "叔"];
test(...$list); // 第一次解包
输出:
第一个参数:苏
第二个参数:南
array(4) {
[0]=>
string(3) "苏"
[1]=>
string(3) "南"
[2]=>
string(3) "大"
[3]=>
string(3) "叔"
}
string(3) "苏"
string(3) "南"
string(3) "大"
string(3) "叔"
不限参数
测试代码:
function test2(...$args) // 无限参数,拿到的是个被封包的数组
{
echo "第一个参数:", $args[0], PHP_EOL;
echo "第二个参数:", $args[1], PHP_EOL;
var_dump($args); // 验证其数组身份
var_dump(...$args); // 第二次解包
}
$list = ["苏", "南", "大", "叔"];
test2(...$list); // 第一个解包
输出和上一例子的输出,完全一致。
第一个参数:苏
第二个参数:南
array(4) {
[0]=>
string(3) "苏"
[1]=>
string(3) "南"
[2]=>
string(3) "大"
[3]=>
string(3) "叔"
}
string(3) "苏"
string(3) "南"
string(3) "大"
string(3) "叔"
从这两个例子中,可以看出:function (...$args)
和$args=func_get_args()
这两种写法中,得到的$args
是完全一致的。
其它
这个不排除还有其它的...
运算符的使用方式或场景,这里做个预留位。
结束语
这些高级语言的语法,是越来越相似了。啥时候大一统?更多php
相关经验文章,请参考:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。