我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

在以前的文章中,苏南大叔描述过nodejs下的三个点运算符,也就是解包操作。那么,在php中也存在着非常类似的三个点运算符。本文将从两个角度来描述三个点运算符在php中的使用方法。

苏南大叔:php教程,如何理解使用三个点解包操作运算符? - 三个点解包运算符
php教程,如何理解使用三个点解包操作运算符?(图1-1)

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验总结。测试环境:win10nginx@1.15.11php@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相关经验文章,请参考:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   php