1、新增 Generators
yield关键字用于当函数需要返回一个迭代器的时候,逐个返回值。
function number10()
{
for($i = 1; $i <= 10; $i += 1)
yield $i;
}
该函数的返回值是一个数组:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
2、新增 finally 关键字
3、foreach 支持 list()
foreach 支持通过 list() 将嵌套数组分离到单独的变量。
<?php
$array = [
[1, 2],
[3, 4],
];
foreach ($array as list($a, $b)) {
echo $a.$b\n";
}
?>
4、empty() 支持传入一个任意表达式,而不仅是一个变量
<?php
function always_false() {
return false;
}
if (empty(always_false())) {
echo 'This will be printed.';
}
5、直接通过下标获取访问数组和字符串字面量的元素或字符
```
echo [1, 2, 3][0]; // 1
echo 'PHP'[0]; // P
```
6、新的密码哈希 API
缺点是缺乏互操作性,在需要和其他语言对接时会比较麻烦。
//加密
echo $hash = password_hash('rasmuslerdorf', PASSWORD_DEFAULT);
//输出结果类似于:$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a
//验证
if(password_verify('rasmuslerdorf','$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a')) {
echo "密码正确";
} else {
echo "密码错误";
}
7、新增 boolval() 函数
PHP已经实现了strval、intval和floatval的函数。为了达到一致性将添加boolval函数。
8、新增 array_column() 函数
可用来返回数组中指定的一列。
$records = array(
array('id' => 2135,'name' => 'John'),
array('id' => 3245,'name' => 'Smith'),
array('id' => 5342,'name' => 'Peter')
);
//从结果集中取出 name 列
$names = array_column($records, 'name');
print_r($names);
//从结果集中总取出 name 列,用相应的 id 作为键值
$names = array_column($records, 'name', 'id');
print_r($names);