PHP8.0 + 版本按数据处理类型分类的新增函数整理表格,包含函数名、对应版本、功能说明及可直接运行的用法示例

PHP8.0 + 版本按数据处理类型分类的新增函数整理表格,包含函数名、对应版本、功能说明及可直接运行的用法示例

小破孩
2025-12-11 / 0 评论 / 13 阅读 / 正在检测是否收录...
分类函数名PHP版本功能说明用法示例
字符串处理str_contains()8.0检查字符串是否包含指定子串(区分大小写),返回布尔值$str = "Hello PHP8";<br>var_dump(str_contains($str, "PHP8")); // bool(true)
var_dump(str_contains($str, "php8")); // bool(false)
字符串处理str_starts_with()8.0检查字符串是否以指定子串开头(区分大小写),返回布尔值$str = "2025-12-11";<br>var_dump(str_starts_with($str, "2025")); // bool(true)
var_dump(str_starts_with($str, "2024")); // bool(false)
字符串处理str_ends_with()8.0检查字符串是否以指定子串结尾(区分大小写),返回布尔值$str = "test.txt";<br>var_dump(str_ends_with($str, ".txt")); // bool(true)
var_dump(str_ends_with($str, ".php")); // bool(false)
字符串处理mb_str_split()8.0多字节安全的字符串分割,支持指定分割长度(解决str_split多字节乱码)$str = "你好PHP8";<br>print_r(mb_str_split($str)); // [0]=>你 [1]=>好 [2]=>P [3]=>H [4]=>P [5]=>8
print_r(mb_str_split($str, 2)); // [0]=>你好 [1]=>PH [2]=>P8
字符串处理strlcpy()8.1安全的字符串拷贝(限制长度,含终止符),返回源字符串总长度$dest = ''; $src = "Hello World";
$len = strlcpy($dest, $src, 6);<br>echo $dest; // Hello
echo $len; // 11
字符串处理mb_str_pad()8.3多字节安全的字符串填充(解决str_pad多字节长度计算错误)$str = "你好";<br>echo mb_str_pad($str, 5, "-", STR_PAD_RIGHT); // 你好---
数组处理array_is_list()8.1检查数组是否为“列表”(索引从0开始、连续递增的整数索引),返回布尔值$list = [1,2,3]; $notList = [0=>1,2=>3];
var_dump(array_is_list($list)); // bool(true)<br>var_dump(array_is_list($notList)); // bool(false)
数组处理array_find()8.3返回数组中第一个满足回调条件的元素,无则返回null$nums = [1,2,3,4,5];<br>$even = array_find($nums, fn($n) => $n % 2 === 0);<br>echo $even; // 2
数组处理array_find_key()8.3返回数组中第一个满足回调条件的键,无则返回null$users = ['a'=>18, 'b'=>22, 'c'=>19];<br>$key = array_find_key($users, fn($age) => $age > 20);<br>echo $key; // b
数组处理array_any()8.3检查数组是否存在至少一个满足回调条件的元素,返回布尔值$nums = [1,3,5];<br>var_dump(array_any($nums, fn($n) => $n%2===0)); // bool(false)
$nums[]=8; var_dump(array_any($nums, fn($n) => $n%2===0)); // bool(true)
数组处理array_all()8.3检查数组所有元素是否都满足回调条件,返回布尔值$nums = [2,4,6];<br>var_dump(array_all($nums, fn($n) => $n%2===0)); // bool(true)
$nums[]=9; var_dump(array_all($nums, fn($n) => $n%2===0)); // bool(false)
数值处理fdiv()8.0浮点数除法(优雅处理除0场景,返回INF/-INF/NaN,替代普通除法)var_dump(fdiv(10,2)); // float(5)
var_dump(fdiv(10,0)); // float(INF)
var_dump(fdiv(0,0)); // float(NAN)
数值处理enum_exists()8.1检查枚举类型是否已定义(适配8.1新增的枚举特性)enum Status { case Success; case Error; }
var_dump(enum_exists('Status')); // bool(true)
var_dump(enum_exists('NonExist')); // bool(false)
日期时间处理DateTimeInterface::format_iso8601()8.2标准化输出ISO 8601格式日期,支持指定毫秒精度$dt = new DateTime('2025-12-11 10:00:00', new DateTimeZone('Asia/Shanghai'));<br>echo $dt->format_iso8601(); // 2025-12-11T10:00:00+08:00
echo $dt->format_iso8601(3); // 2025-12-11T10:00:00.000+08:00
对象/类型处理get_debug_type()8.0更精准的变量类型获取(比gettype友好,支持枚举/对象等)$obj = new stdClass(); enum E { case A; }<br>echo get_debug_type("test"); // string<br>echo get_debug_type($obj); // stdClass
echo get_debug_type(E::A); // E
对象/类型处理ReflectionClass::isReadOnly()8.2反射检查类是否为只读类(适配8.2新增的readonly类特性)readonly class User { public string $name; }<br>$ref = new ReflectionClass(User::class);
var_dump($ref->isReadOnly()); // bool(true)
JSON处理json_validate()8.3高效验证JSON字符串有效性(无需解码,性能优于json_decode)$valid = '{"name":"PHP8"}'; $invalid = '{"name":"PHP8"';
var_dump(json_validate($valid)); // bool(true)<br>var_dump(json_validate($invalid)); // bool(false)
正则表达式preg_last_error_msg()8.0返回正则操作的可读错误信息(替代preg_last_error的数值码)preg_match('/[a-z/', 'test'); // 语法错误
echo preg_last_error_msg(); // "missing terminating ] for character class"
字节处理bytes_format()8.3将字节数格式化为易读单位(B/KB/MB/GB等),支持指定小数位数echo bytes_format(1024); // 1.00 KB
echo bytes_format(1048576); // 1.00 MB
echo bytes_format(1500, 0); // 2 KB

关键说明:

  1. 版本兼容性:表格中函数均为PHP8.0及以上新增/增强,部分函数(如array_find)仅在PHP8.3+可用,使用前需确认运行环境版本;
  2. 多字节支持mb_*开头的函数解决了中文等多字节字符的处理问题,推荐优先使用;
  3. 性能优化:如json_validatejson_decode验证JSON更高效(无需解析整个字符串);
  4. 类型安全get_debug_typearray_is_list等函数提升了PHP的类型判断精准度,适配8.0+的类型强化特性。
0

评论 (0)

取消