PHP语法糖

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.\n";
 8 
 9 // 列出他们的其中一个
10 list($drink, , $power) = $info;
11 echo "$drink has $power.\n";
12 
13 // 或者让我们跳到仅第三个
14 list( , , $power) = $info;
15 echo "I need $power!\n";
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

 

posted @ 2021-01-25 10:23  欢乐豆123  阅读(409)  评论(0编辑  收藏  举报