PHP 各版本特性:PHP 7.3.x

本文部分内容根据官网进行删减,仅整理常用特性。

新特性

数据解析支持引用

[&$a, [$b, &$c]] = $d;对应的 list() 也一样支持。

新函数

array_key_first()

获取数组的第一个键

1
2
3
4
5
$array = ['a' => 1, 'b' => 2, 'c' => 3];

$firstKey = array_key_first($array);

print_r($firstKey); // a

警告:有几种方法可以为 PHP 7.3.0 之前的版本提供此功能。可以使用 array_keys(),但是效率可能很低。也可以使用 reset()key(),但这可能会更改内部数组指针。一个有效的解决方案,它不更改内部数组指针,写为

1
2
3
4
5
6
7
8
9
10
11
<?php
if (! function_exists('array_key_first')) {
function array_key_first(array $arr)
{
foreach($arr as $key => $unused) {
return $key;
}

return null;
}
}

array_key_last()

获取数组的最后一个键

is_countable()

验证变量的内容是否为可计数的值

1
2
3
4
5
<?php
var_dump(is_countable([1, 2, 3])); // bool(true)
var_dump(is_countable(new ArrayIterator(['foo', 'bar', 'baz']))); // bool(true)
var_dump(is_countable(new ArrayIterator())); // bool(true)
var_dump(is_countable(new stdClass())); // bool(false)

废弃的功能

大小写不敏感的常量

大小写不敏感的常量声明现已被废弃。将 TRUE 作为第三个参数传递给 define() 将会导致一个废弃警告。大小写不敏感的使用(在读取时使用一个与声明时不同的大小写方式)也已被废弃。

在字符串中搜索非字符串内容

废弃:将一个非字符串内容传递给字符串搜索函数。 在将来所有待搜索的内容都将被视为字符串,而不是 ASCII 编码值。如果需要依赖这个特性,你应该 要么显示地进行类型转换(转为字符串),或者显示地调用 chr()。 以下是受到影响的方法:


原文

评论