PHP语法糖
每一次伴随着PHP新版本的发布,几乎都会有一些新的语法加入,这种语法对语言的功能并没有影响,但是更方便编程使用。我们称之为语法糖,其实就是一些语法技巧,来简化程序员工作。
1、用...定义变长参数函数(php5.6及以上版本)
php在用户自定义函数中支持可变数量的参数列表:使用…$args代替任意数量参数
简单来说,就是允许我们声明传入的参数数组,并且参数拆包允许我们传递一个数组到一个函数,在函数内部自动解包。
参考代码:
1 <?php 2 function add($a, $b) { 3 return $a + $b; 4 } 5 6 $arr = [1, 2]; 7 $arr2 = [1, 2, 3, 4]; 8 $arr3 = [1]; 9 10 echo add(...$arr).PHP_EOL; //输出3 11 echo add(...$arr2).PHP_EOL; //也输出3,忽略数组多余参数 12 echo add(...$arr3).PHP_EOL; //报错,方法缺少必要参数 13 14 // 输出结果 15 // 3 16 // 3 17 // Fatal error: Uncaught ArgumentCountError: Too few arguments to function add()...
2、list- 把数组中的值赋给一组变量
1)像 array() 一样,这不是真正的函数,而是语言结构。 list() 可以在单次操作内就为一组变量赋值。
1 <?php 2 3 $info = array('coffee', 'brown', 'caffeine'); 4 5 // 列出所有变量 6 list($drink, $color, $power) = $info; 7 echo "$drink is $color and $power makes it special. "; 8 9 // 列出他们的其中一个 10 list($drink, , $power) = $info; 11 echo "$drink has $power. "; 12 13 // 或者让我们跳到仅第三个 14 list( , , $power) = $info; 15 echo "I need $power! "; 16 17 // list() 不能对字符串起作用 18 list($bar) = "abcde"; 19 var_dump($bar); // NULL 20 21 // 输出结果 22 23 // coffee is brown and caffeine makes it special. 24 // coffee has caffeine. 25 // I need caffeine!
2) list() 使用 array 索引的顺序和它何时定义无关
注意:
1)在PHP7.1.0 之前的版本,list() 仅能用于数字索引的数组,并假定数字索引从 0 开始。
2)PHP5里,list() 从最右边的参数开始赋值; PHP7 里,list() 从最左边的参数开始赋值。
参考代码一:
1 <?php 2 $foo = array(2 => 'a', 'foo' => 'b', 0 => 'c'); 3 $foo[1] = 'd'; 4 list($x, $y, $z) = $foo; 5 //var_dump($foo, $x, $y, $z); 6 7 // 输出结果 8 //array(4) { 9 // [2]=> 10 // string(1) "a" 11 // ["foo"]=> 12 // string(1) "b" 13 // [0]=> 14 // string(1) "c" 15 // [1]=> 16 // string(1) "d" 17 //} 18 //string(1) "c" 19 //string(1) "d" 20 //string(1) "a"
参考代码二:
1 <?php 2 $foo = array(2 => 'a', 1 => 'b', 0 => 'c'); 3 list($x, $y, $z) = $foo; 4 var_dump($x, $y, $z); 5 6 // 输出结果 7 // c 8 // b 9 // a
参考代码三:
1 <?php 2 $foo = array(2 => 'a', 'foo' => 'b', 0 => 'c'); 3 list($x, $y, $z) = $foo; 4 var_dump($x, $y, $z); 5 6 // 输出结果 7 // c 8 // NULL 9 // a
这里会报一个notice的错误:
这里因为没有找到为1的索引,所以报了一个警告错误。
参考链接:https://www.php.net/manual/zh/function.list.php