PHP 7.1新特性的汇总介绍 一、可空类型 可空类型主要用于参数类型声明和函数返回值声明。 主要的两种形式如下: 1, "b" => 2, "c" => 3); // 5.4 及之后 $array = [1, 2, 3]; $array = ["a" => 1, "b" => 2, "c" => 3]; 引申到另外一个问题上,如果我们要把数组的值赋值给不同的变量,可以通过 list 来实现: $a, "b" => $b, "c" => $c] = $array; PHP7.1 实现了这个特性。但是要注意的是:出现在左值中的 [] 并不是数组的简写,是 list() 的简写。 但是并不仅仅如此,新的 list() 的实现并不仅仅可以出现在左值中,也能在 foreach 循环中使用: $x, "y" => $y]) { var_dump($x, $y); } 不过因为实现的问题,list() 和 [] 不能相互嵌套使用: 1, "b" => 2, "c" => 3]; ["a" => $a, "b" => $b, "c" => $c] = $array; 这也就相当于: '1', 2 => '2']; 会得到 PHP error: Undefined offset: 0... 的错误。 而新的实现则可以通过以下方式来调整赋值: $a, 2 => $b) = [1 => '1', 2 => '2']; 不同于数组的是,list 并不支持混合形式的 key,以下写法会触发解析错误: $keyed) = $array; 更复杂的情况,list 也支持复合形式的解析: 1, "y" => 2], ["x" => 2, "y" => 1] ]; list(list("x" => $x1, "y" => $y1), list("x" => $x2, "y" => $y2)) = $points; $points = [ "first" => [1, 2], "second" => [2, 1] ]; list("first" => list($x1, $y1), "second" => list($x2, $y2)) = $points; 以及循环中使用: 1, "y" => 2], ["x" => 2, "y" => 1] ]; foreach ($points as list("x" => $x, "y" => $y)) { echo "Point at ($x, $y)", PHP_EOL; } 四、void 返回类型 PHP7.0 添加了指定函数返回类型的特性,但是返回类型却不能指定为 void,7.1 的这个特性算是一个补充: getReflectionConstant( "TEST_CONST" ); $consts = $obj->getReflectionConstants(); 六、多条件 catch 在以往的 try ... catch 语句中,每个 catch 只能设定一个条件判断: