php8.+ 新函数总结

PHP系统函数是PHP核心提供的内置函数,用于执行常见任务,如字符串操作、数组处理、数学运算等。它们通过预定义代码块封装了特定功能,开发者可直接调用而无需重复编写代码。
而 PHP 8.0以后又新增了一些实用函数,今天总结部分常见的系统函数供大家学习使用。

1.fdiv()

<?php
// 用于浮点数除法,返回两个数的商
echo fdiv(10,3);
// 3.333333333333

2.str_contains()

<?php
// 检查字符串是否包含另一个字符
$str="125abc4556";
if(str_contains($str,'abc')){echo 'Found';
}else{echo 'Not Found';
}
// Found

3.str_starts_with()和str_ends_with()

<?php
// 分别检查字符串是否以特定前缀或后缀开始或结
$str="abc125abc4556xyz";
if(str_starts_with($str,'abc')){echo 'Starts with abc';
}
// Starts with abcif(str_ends_with($str,'xyz')){echo 'Ends with xyz';
}
// Ends with abc

4.函数指定指定参数

<?php
// 命名参数:允许在调用函数时通过名称指定参数,使代码更清晰。
function example(int $a, string $b):int|string {// 函数体return $a.$b;
}
$m = example(a:10, b:"hello");
var_dump($m);
// string(7) "10hello"

5.json_validate()

<?php
// 检查一个字符串是否包含有效的JSON
$res1 = json_validate('{ "test": { "foo": "bar" } }');
var_dump($res1);
// bool(true)$res2 = json_validate('{ "": "": "" } }');
var_dump($res2);
// bool(false)

6.mb_str_pad()

<?php
// PHP 8 >= 8.3.0 用另一个多字节字符串将一个多字节字符串填充到特定长度var_dump(mb_str_pad('▶▶',6,'❤❓❇',STR_PAD_RIGHT));
// string(18) "▶▶❤❓❇❤"var_dump(mb_str_pad('▶▶',6,'❤❓❇',STR_PAD_LEFT));
// string(18) "❤❓❇❤▶▶"var_dump(mb_str_pad('▶▶',6,'❤❓❇',STR_PAD_BOTH));
// string(18) "❤❓▶▶❤❓"var_dump(mb_str_pad("🎉",3,"祝",STR_PAD_LEFT));
// string(10) "祝祝🎉"

7.bcceil()

<?php
// PHP 8 >= 8.4.0 向上取整任意精度数
var_dump(bcceil('4.3'));
var_dump(bcceil('9.999'));
var_dump(bcceil('-3.14'));// string(1) "5"
// string(2) "10"
// string(2) "-3"

8.bcdivmod()

<?php
//  PHP 8 >= 8.4.0 获取任意精度数的商和模[$quot,$rem] = bcdivmod('5','3');
echo $quot; // 1
echo $rem;  // 2[$quot,$rem] = bcdivmod('5','-3');
echo $quot; // -1
echo $rem;  // 2[$quot,$rem] = bcdivmod('-5','3');
echo $quot; // -1
echo $rem;  // -2
[$quot,$rem] = bcdivmod('-5','-3');
echo $quot; // 1
echo $rem;  // -2[$quot,$rem] = bcdivmod('5.7','1.3',1);
echo $quot; // 4
echo $rem;  // 0.5

9.bcfloor()

<?php
// PHP 8 >= 8.4.0 四舍五入任意精度数
var_dump(bcfloor('4.3'));
var_dump(bcfloor('9.999'));
var_dump(bcfloor('-3.14'));
// string(1) "4"
// string(1) "9"
// string(2) "-4"

10.bcround()

<?php
// PHP 8 >= 8.4.0 四舍五入任意精度数
var_dump(bcround('3.4'));
var_dump(bcround('3.5'));
var_dump(bcround('3.6'));
var_dump(bcround('3.6',0));
var_dump(bcround('5.045',2));
var_dump(bcround('5.055',2));
var_dump(bcround('345',-2));
var_dump(bcround('345',-3));
var_dump(bcround('678',-2));
var_dump(bcround('678',-3));
// string(1) "3"
// string(1) "4"
// string(1) "4"
// string(1) "4"
// string(4) "5.05"
// string(4) "5.06"
// string(3) "300"
// string(1) "0"
// string(3) "700"
// string(4) "1000"$number='123.45';
var_dump(bcround($number,3));
var_dump(bcround($number,2));
var_dump(bcround($number,1));
var_dump(bcround($number,0));
var_dump(bcround($number,-1));
var_dump(bcround($number,-2));
var_dump(bcround($number,-3));
// string(7) "123.450"
// string(6) "123.45"
// string(5) "123.5"
// string(3) "123"
// string(3) "120"
// string(3) "100"
// string(1) "0"

11.array_merge()

<?php
// array_merge() 函数新用法
$arrayA=['a'=>1];
$arrayB=['b'=>2];
$result=array_merge(['c'=>0],$arrayA,$arrayB);
print_r($result);
// Array ( [c] => 0 [a] => 1 [b] => 2 )// 新方式$arrayA=['a'=>1];
$arrayB=['b'=>2];
$result=['c'=>0,...$arrayA,...$arrayB];
print_r($result);
// Array ( [c] => 0 [a] => 1 [b] => 2 )

12.array_is_list()

<?php
// 检查数组是否为列表(连续的数字键)。
$array=[1,2,3];
var_dump(array_is_list($array));
// 输出:bool(true)
$result=array_is_list(['a'=>1,'b'=>2,3]);
var_dump($result);
// 输出:bool(false)

13.array_key_first()array_key_last()和array_count_values()

<?php
// 这两个函数分别用于获取数组的第一个键和最后一个键
$array=[1,2,3,3];
echo array_key_first($array);
// 输出 0
echo array_key_last($array);
// 输出 3
$ret = array_count_values($array);
print_r($ret);
// Array ( [1] => 1 [2] => 1 [3] => 2 )

14.password_hash()、password_verify()

<?php
// 密码散列算法
$password='myLaravel';$hash = password_hash($password,PASSWORD_DEFAULT); // 使用Argon2id算法$ischeckpwd = password_verify($password,$hash); // 检查密码是否匹配

15.array_find()、array_find_key()

<?php
// 例如 array_find() 和 array_find_key(),显著简化了常见的数组操$numbers = [1,2,3,4];
$found = array_find($numbers,function($value){return $value > 3;
});
print_r($found);// 输出: 4(第一个大于3的元素)$users = [["id"=>1,"name"=>"Alice"],["id"=>2,"name"=>"Bob"]
];
$user = array_find_key($users,'id',function($key){return $key == 1;
});
print_r($user);
// 输出: [id: 1, name: "Alice"](找到id为1的用户)// 检查是否至少有一个数组元素满足回调函数
var_dump(array_any($array, function (string $value) {
return strlen($value) > 5;
}));
// bool(true)// 检查所有数组元素是否满足回调函数
var_dump(array_all($array, function (string $value) {
return strlen($value) < 12;
}));
// bool(false)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/93902.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/93902.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt事件处理机制详解

一、事件处理基本流程在Qt中&#xff0c;所有从QObject派生的类都能处理事件。事件处理的核心流程如下&#xff1a;事件入口函数&#xff1a;bool QObject::event(QEvent *e)参数e包含事件信息&#xff0c;通过e->type()获取事件类型返回值true表示事件已被处理&#xff0c;…

Zynq中级开发七项必修课-第三课:S_AXI_GP0 主动访问 PS 地址空间

Zynq中级开发七项必修课-第三课&#xff1a;S_AXI_GP0 主动访问 PS 地址空间 目标1.0 编写 AXI-Lite Master&#xff1a;按键计数 → 写入 PS 内存1.1 PL 触发中断 → PS 响应并串口打印按键计数值BD图axi_lite_master.v // // AXI4-Lite Simple Master (single-shot, non-pip…

CVPR | 2025 | MAP:通过掩码自回归预训练释放混合 Mamba - Transformer 视觉骨干网络的潜力

文章目录CVPR | 2025 | MAP&#xff1a;通过掩码自回归预训练释放混合 Mamba - Transformer 视觉骨干网络的潜力创新点初步研究初步结论方法确定一个混合网络方法掩码机制掩码比例MAP的transformer解码器重建目标实验ImageNet-1k 上的 2D 分类CVPR | 2025 | MAP&#xff1a;通过…

Spring Boot + Spring AI 最小可运行 Demo

一. 项目依赖&#xff08;pom.xml&#xff09;<project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0https://maven.apache.org/xsd/mav…

AI重塑校园教育:中小学AI智慧课堂定制方案+AI作业批改减负,告别一刀切学生进步快

家长们&#xff0c;你有没有听过孩子抱怨上学的烦恼&#xff1f;课堂上老师讲的内容&#xff0c;有的同学觉得太简单 “吃不饱”&#xff0c;有的却跟不上 “听不懂”&#xff1b;放学后作业堆成山&#xff0c;老师要熬夜批改到半夜&#xff0c;错题反馈要等第二天才能拿到&…

旧物循环,交易新生——旧物回收二手交易小程序,引领绿色消费新风尚

在资源日益紧张、环境污染问题日益突出的今天&#xff0c;绿色消费已经成为时代发展的必然趋势。旧物回收二手交易小程序&#xff0c;作为绿色消费的重要载体&#xff0c;正以其独特的优势和魅力&#xff0c;引领着一场关于旧物循环、交易新生的绿色革命。一、旧物循环&#xf…

刷机维修进阶教程-----如何清除云账号 修复wifi 指南针 相机 指纹等刷机故障

在刷机、系统升级或降级过程中,是否遇到过以下问题:WiFi无法开启、相机无响应、指南针或陀螺仪失灵 指纹等故障?另外,云账号是否仍会保留,即使通过9008模式刷机也无法彻底清除?那么这篇博文都可以找到答案。 通过博文了解💝💝💝 1💝💝💝----云账号信息分区如…

AI翻唱实战:用[灵龙AI API]玩转AI翻唱 – 第6篇

历史文章 [灵龙AI API] 申请访问令牌 - 第1篇 [灵龙AI API] AI生成视频API&#xff1a;文生视频 – 第2篇 图生视频实战&#xff1a;用[灵龙AI API]玩转AI生成视频 – 第2篇&#xff0c;从静图到大片 单图特效实战&#xff1a;用[灵龙AI API]玩转AI生成视频 – 第3篇&#…

大模型0基础开发入门与实践:第11章 进阶:LangChain与外部工具调用

第11章 进阶&#xff1a;LangChain与外部工具调用 1. 引言 在上一章&#xff0c;我们成功地创造了我们的第一个“生命”——一个可以对话的机器人。我们为它的诞生而兴奋&#xff0c;但很快我们就会发现它的局限性。它就像一个被囚禁在玻璃房中的天才大脑&#xff0c;拥有渊博…

SQL 日期处理:深入解析与高效实践

SQL 日期处理&#xff1a;深入解析与高效实践 引言 在数据库管理中&#xff0c;日期和时间数据的处理是不可或缺的一部分。SQL&#xff08;结构化查询语言&#xff09;提供了丰富的日期和时间函数&#xff0c;使得对日期的处理变得既灵活又高效。本文将深入探讨SQL日期处理的相…

源代码部署 LAMP 架构

源代码部署 LAMP 架构 &#xff08;Linux Apache MySQL PHP&#xff09; 一、LAMP 架构概述 LAMP 是一套经典的开源 Web 服务架构&#xff0c;通过源代码安装可实现高度定制化&#xff0c;适用于对软件版本、功能模块有特定需求的场景。本指南基于 CentOS 7 系统&#xf…

GO环境变量中GO111MODULE到底是干啥的?

查看GO111MODULE变量GO111MODULE的作用GO111MODULE的案例演示 一&#xff0c;查看GO111MODULE变量 ]# go env GO111MODULE 或者 ]# go env | grep GO111MODULE二&#xff0c;GO111MODULE的作用 auto : 自动判断机制 当项目位于 $GOPATH/src 目录外且包含 go.mod 文件时&…

在线培训机构如何降低培训视频被盗录的风险

每一节精心录制的培训视频&#xff0c;都凝聚着讲师的心血与机构的巨大投入。然而&#xff0c;只需一个简单的录屏软件&#xff0c;这一切都可能被轻易窃取。一旦被盗取&#xff0c;不但会损失经济利益&#xff0c;还可能会影响机构的声誉。那么&#xff0c;在线培训机构如何降…

Docker:安装配置

目录一、卸载旧版本二、配置Docker的yum库三、安装Docker3.1 在线安装方式3.2 离线安装方式四、配置阿里云镜像加速【选配】五、Docker服务相关命令六、导出和导入镜像官网 一、卸载旧版本 首先如果系统中已经存在旧版本的Docker&#xff0c;则先卸载&#xff1a; yum remov…

RabbitMQ:SpringAMQP 入门案例

目录一、概述二、基础配置三、生产者四、消费者一、概述 这是一篇Java集成RabbitMQ的入门案例&#xff0c;在这里我们做一个小案例&#xff0c;来体会一下RabbitMQ的魅力。 首先我们要做的就是创建一个生产者一个消费者&#xff1a; 生产者直接向RabbitMQ的队列&#xff08;Q…

Ubuntu 下面安装搜狗输入法debug记录

目录0. 整体安装流程1. 在键盘输入法系统中&#xff0c;没有“fcitx”选项解决方法0. 整体安装流程 详细的Ubuntu搜狗输入法安装指南请参考官方教程&#xff1a;Ubuntu搜狗输入法安装指南 1. 在键盘输入法系统中&#xff0c;没有“fcitx”选项 即使是安装完 fcitx&#xff0…

Jenkins+GitLab在CentOS7上的自动化部署方案

最近在安装jenkins实现微服务的自动发布&#xff0c;记录配置过程以免再次踩坑。 Centos7环境准备 jenkins、gitlab配置&#xff0c;全程使用ftpuser普通用户操作 &#xff08;1&#xff09;安装好jdk并配置好环境变量 安装路径/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.…

打开或者安装Navicat时出现Missing required library libcurl.dll,126报错解决方法(libmysql_e.dll等)

提示 Missing required library libcurl.dll 出现原因是由于Navicat安装目录下libcurl.dll可能不能用了&#xff0c;下载该文件放到Navicat安装目录下即可。下载地址&#xff1a;libcurl.dll — download free for Windows 下载解压包里只有个libcurl.dll 提示 Missing requir…

基于SpringBoot的流浪动物领养管理系统【2026最新】

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

Qt实现TabWidget通过addTab函数添加的页,页内控件自适应窗口大小

前言&#xff1a;因为项目的要求&#xff0c;需要把几个不同类型功能的界面集成在同一个窗口中&#xff0c;方便用户不切换窗口&#xff0c;也能快捷的操作不同类型的功能。我首先想到的是通过选项卡方式&#xff0c;让几个类别的功能界面通过不同选项卡进行切换&#xff0c;这…