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)