PHP系统函数是PHP核心提供的内置函数,用于执行常见任务,如字符串操作、数组处理、数学运算等。它们通过预定义代码块封装了特定功能,开发者可直接调用而无需重复编写代码。
而 PHP 8.0以后又新增了一些实用函数,今天总结部分常见的系统函数供大家学习使用。
1.fdiv()
php
<?php
// 用于浮点数除法,返回两个数的商
echo fdiv(10,3);
// 3.333333333333
2.str_contains()
php
<?php
// 检查字符串是否包含另一个字符
$str="125abc4556";
if(str_contains($str,'abc')){
echo 'Found';
}else{
echo 'Not Found';
}
// Found
3.str_starts_with()和str_ends_with()
php
<?php
// 分别检查字符串是否以特定前缀或后缀开始或结
$str="abc125abc4556xyz";
if(str_starts_with($str,'abc')){
echo 'Starts with abc';
}
// Starts with abc
if(str_ends_with($str,'xyz')){
echo 'Ends with xyz';
}
// Ends with abc
4.函数指定指定参数
php
<?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
<?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
// 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
// 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
// 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
// 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
// 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
<?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
<?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
<?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
<?php
// 密码散列算法
$password='myLaravel';
$hash = password_hash($password,PASSWORD_DEFAULT); // 使用Argon2id算法
$ischeckpwd = password_verify($password,$hash); // 检查密码是否匹配
15.array_find()、array_find_key()
php
<?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)