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
英文地址,請注明出處:http://en.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;這…