ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
php5.6 新特性 可变数量的参数 可变参数由 ... 语法实现;在 PHP 5.5 及更早版本中,使用函数 func_num_args(),func_get_arg(),和 func_get_args() ``` //5.6以前实现可变参数 function sum() { $acc = 0; foreach (func_get_args() as $n) { $acc += $n; } return $acc; } echo sum(1, 2, 3, 4); //新特性 function f($req, $opt = null, ...$params) { // $params 是一个包含了剩余参数的数组 printf('$req的值: %d; $opt的值: %d; $params的个数: %d;', $req, $opt, count($params)); echo gettype($params)."<br>"; } f(1);//$req的值: 1; $opt的值: 0; $params的个数: 0;array f(1, 2);//$req的值: 1; $opt的值: 2; $params的个数: 0;array f(1, 2, 3);//$req的值: 1; $opt的值: 2; $params的个数: 1;array f(1, 2, 3, 4);//$req的值: 1; $opt的值: 2; $params的个数: 2;array f(1, 2, 3, 4, 5);//$req的值: 1; $opt的值: 2; $params的个数: 3;array ``` ``` function fieldMergeData($newFieldName, ...$fieldArr){ var_export($fieldArr); } fieldMergeData('aaaa',['jan'=>1,'feb'=>0],['jan'=>1,'feb'=>0]);//[['jan'=>1,'feb'=>0],['jan'=>1,'feb'=>0]] fieldMergeData('aaaa',['jan'=>1,'feb'=>0]);//[['jan'=>1,'feb'=>0]] ``` 在调用函数的时候,使用...运算符, 将数组和可遍历对象展开为函数参数。 在其他编程语言,比如 Ruby中,这被称为连接运算符 function add($a, $b, $c) { return $a + $b + $c; } //add(1,...[2, 3]) $operators = [2, 3]; echo add(1, ...$operators);//6 与add(1,2,3)效果一样 ## **数组扩展运算符(展开运算符 PHP 7.4)** 现在你可以在数组中使用展开运算符: 注意:只对数字索引有效 ``` $arrayA = [1, 2, 3]; $arrayB = [4, 5]; $result = [0, ...$arrayA, ...$arrayB, 6 ,7]; // [0, 1, 2, 3, 4, 5, 6, 7] ```