当前位置: 首页 > news >正文

PHP 常用函数及用法

文章目录

  • PHP 常用函数及用法
    • 一、字符串处理函数
      • 1. 字符串基础操作
      • 2. 字符串查找与替换
      • 3. 字符串分割与连接
      • 4. 字符串大小写转换
      • 5. 字符串格式化
    • 二、数组操作函数
      • 1. 数组基础操作
      • 2. 数组遍历与查找
      • 3. 数组修改与排序
      • 4. 数组过滤与合并
    • 三、文件操作函数
      • 1. 文件读写
      • 2. 文件和目录信息
    • 四、日期和时间函数
      • 1. 日期时间格式化
      • 2. DateTime 类
    • 五、HTTP请求和响应函数
      • 1. 获取请求信息
      • 2. HTTP响应控制
    • 六、安全相关函数
      • 1. 输入验证与过滤
      • 2. 密码加密
    • 七、调试和错误处理函数
      • 1. 输出函数
      • 2. 错误日志
      • 3. 错误处理
    • 八、其他常用函数
      • 1. 类型转换与检查
      • 2. 数学函数
      • 3. 其他实用函数
    • 九、PHP 7+ 新增常用函数
      • 1. 空合并运算符函数
      • 2. 数组展开运算符
      • 3. 箭头函数 (PHP 7.4+)
    • 十、常用函数最佳实践

PHP 常用函数及用法

本文档整理了PHP中最常用的函数及其用法,按照功能分类,方便快速查阅和学习。

一、字符串处理函数

1. 字符串基础操作

strlen() - 获取字符串长度

$str = "Hello, World!";
echo strlen($str); // 输出: 13

mb_strlen() - 多字节字符串长度

$str = "你好,世界!";
echo mb_strlen($str, 'UTF-8'); // 输出: 6

trim() - 去除字符串首尾空白

$str = "  Hello World  ";
echo trim($str); // 输出: "Hello World"
// 可选参数:指定要移除的字符
echo trim($str, " Hd!"); // 输出: "ello Worl"

ltrim()/rtrim() - 去除左侧/右侧空白

$str = "  Hello World  ";
echo ltrim($str); // 输出: "Hello World  "
echo rtrim($str); // 输出: "  Hello World"

2. 字符串查找与替换

strpos() - 查找子串首次出现位置

$str = "Hello, World!";
$pos = strpos($str, "World");
echo $pos; // 输出: 7
// 找不到返回false
if (strpos($str, "PHP") === false) {echo "未找到PHP";
}

strrpos() - 查找子串最后出现位置

$str = "Hello, World! World!";
echo strrpos($str, "World"); // 输出: 14

str_replace() - 字符串替换

$str = "Hello, World!";
$newStr = str_replace("World", "PHP", $str);
echo $newStr; // 输出: "Hello, PHP!"// 数组形式批量替换
$search = ["Hello", "World"];
$replace = ["Hi", "PHP"];
echo str_replace($search, $replace, $str); // 输出: "Hi, PHP!"

preg_replace() - 正则表达式替换

$str = "Hello123World456";
$newStr = preg_replace("/\d+/", "", $str);
echo $newStr; // 输出: "HelloWorld"

3. 字符串分割与连接

explode() - 将字符串分割为数组

$str = "apple,banana,orange";
$fruits = explode(",", $str);
print_r($fruits); // 输出: Array([0] => apple [1] => banana [2] => orange)// 限制分割数量
$fruits = explode(",", $str, 2);
print_r($fruits); // 输出: Array([0] => apple [1] => banana,orange)

implode()/join() - 将数组元素连接为字符串

$fruits = ["apple", "banana", "orange"];
$str = implode(", ", $fruits);
echo $str; // 输出: "apple, banana, orange"
// join是implode的别名
$str = join(", ", $fruits);

substr() - 截取子串

$str = "Hello, World!";
echo substr($str, 0, 5); // 输出: "Hello"
echo substr($str, 7); // 输出: "World!"
echo substr($str, -6); // 输出: "World!"(从末尾开始)
echo substr($str, -6, -1); // 输出: "World"(从末尾开始,长度-1)

4. 字符串大小写转换

strtolower() - 转换为小写

$str = "Hello, WORLD!";
echo strtolower($str); // 输出: "hello, world!"

strtoupper() - 转换为大写

$str = "Hello, World!";
echo strtoupper($str); // 输出: "HELLO, WORLD!"

ucfirst() - 首字母大写

$str = "hello, world!";
echo ucfirst($str); // 输出: "Hello, world!"

ucwords() - 每个单词首字母大写

$str = "hello, world!";
echo ucwords($str); // 输出: "Hello, World!"

5. 字符串格式化

sprintf() - 格式化字符串

$name = "张三";
$age = 30;
$str = sprintf("我的名字是%s,今年%d岁。", $name, $age);
echo $str; // 输出: "我的名字是张三,今年30岁。"// 常用格式说明符:
// %s - 字符串
// %d - 整数
// %f - 浮点数
// %.2f - 保留2位小数的浮点数

printf() - 格式化并直接输出

printf("我的名字是%s,今年%d岁。", $name, $age);
// 等同于 echo sprintf(...)

二、数组操作函数

1. 数组基础操作

count() - 计算数组元素个数

$arr = ["apple", "banana", "orange"];
echo count($arr); // 输出: 3// 计算多维数组所有元素
$multiArr = [[1, 2], [3, 4]];
echo count($multiArr, COUNT_RECURSIVE); // 输出: 4

is_array() - 检查变量是否为数组

$arr = ["apple", "banana"];
var_dump(is_array($arr)); // 输出: bool(true)

in_array() - 检查值是否在数组中

$arr = ["apple", "banana", "orange"];
echo in_array("banana", $arr); // 输出: 1 (true)
echo in_array("grape", $arr); // 输出: (空) false// 严格比较(类型也必须相同)
echo in_array(0, $arr, true); // 输出: false

2. 数组遍历与查找

array_search() - 在数组中搜索值并返回键名

$arr = ["a" => "apple", "b" => "banana", "c" => "orange"];
echo array_search("banana", $arr); // 输出: b// 严格比较
$arr = [0 => "apple", 1 => 0, 2 => "orange"];
echo array_search("0", $arr, true); // 输出: (空) false

array_key_exists() - 检查键名是否存在

$arr = ["a" => "apple", "b" => "banana"];
echo array_key_exists("a", $arr); // 输出: 1 (true)
echo array_key_exists("c", $arr); // 输出: (空) false

array_keys() - 获取数组所有键名

$arr = ["a" => "apple", "b" => "banana"];
print_r(array_keys($arr)); // 输出: Array([0] => a [1] => b)// 可选参数:只获取特定值的键名
$arr = ["a" => 1, "b" => 2, "c" => 1];
print_r(array_keys($arr, 1)); // 输出: Array([0] => a [1] => c)

array_values() - 获取数组所有值

$arr = ["a" => "apple", "b" => "banana"];
print_r(array_values($arr)); // 输出: Array([0] => apple [1] => banana)

3. 数组修改与排序

array_push() - 将一个或多个元素压入数组末尾

$arr = ["apple", "banana"];
array_push($arr, "orange", "grape");
print_r($arr); // 输出: Array([0] => apple [1] => banana [2] => orange [3] => grape)

array_pop() - 弹出数组最后一个元素

$arr = ["apple", "banana", "orange"];
$last = array_pop($arr);
echo $last; // 输出: orange
print_r($arr); // 输出: Array([0] => apple [1] => banana)

array_shift() - 移除数组第一个元素

$arr = ["apple", "banana", "orange"];
$first = array_shift($arr);
echo $first; // 输出: apple
print_r($arr); // 输出: Array([0] => banana [1] => orange)

array_unshift() - 在数组开头插入一个或多个元素

$arr = ["apple", "banana"];
array_unshift($arr, "grape", "orange");
print_r($arr); // 输出: Array([0] => grape [1] => orange [2] => apple [3] => banana)

sort() - 对数组进行升序排序

$arr = [3, 1, 4, 2];
sort($arr);
print_r($arr); // 输出: Array([0] => 1 [1] => 2 [2] => 3 [3] => 4)// 关联数组会丢失键名
$arr = ["c" => 3, "a" => 1, "b" => 2];
sort($arr);
print_r($arr); // 输出: Array([0] => 1 [1] => 2 [2] => 3)

rsort() - 对数组进行降序排序

$arr = [3, 1, 4, 2];
rsort($arr);
print_r($arr); // 输出: Array([0] => 4 [1] => 3 [2] => 2 [3] => 1)

asort() - 保持索引关系的升序排序

$arr = ["c" => 3, "a" => 1, "b" => 2];
asort($arr);
print_r($arr); // 输出: Array([a] => 1 [b] => 2 [c] => 3)

arsort() - 保持索引关系的降序排序

$arr = ["c" => 3, "a" => 1, "b" => 2];
arsort($arr);
print_r($arr); // 输出: Array([c] => 3 [b] => 2 [a] => 1)

ksort() - 按键名排序

$arr = ["c" => 3, "a" => 1, "b" => 2];
ksort($arr);
print_r($arr); // 输出: Array([a] => 1 [b] => 2 [c] => 3)

4. 数组过滤与合并

array_merge() - 合并一个或多个数组

$arr1 = ["a" => "apple", "b" => "banana"];
$arr2 = ["c" => "orange", "d" => "grape"];
$merged = array_merge($arr1, $arr2);
print_r($merged); // 输出: Array([a] => apple [b] => banana [c] => orange [d] => grape)// 索引数组会重新索引
$arr1 = ["apple", "banana"];
$arr2 = ["orange", "grape"];
print_r(array_merge($arr1, $arr2)); // 输出: Array([0] => apple [1] => banana [2] => orange [3] => grape)

array_filter() - 用回调函数过滤数组元素

$arr = [1, 2, 3, 4, 5, 6];
// 保留偶数
$even = array_filter($arr, function($value) {return $value % 2 == 0;
});
print_r($even); // 输出: Array([1] => 2 [3] => 4 [5] => 6)// 过滤空值
$arr = ["apple", null, "banana", "", false];
$nonEmpty = array_filter($arr);
print_r($nonEmpty); // 输出: Array([0] => apple [2] => banana)

array_map() - 将回调函数应用到数组的每个元素

$arr = [1, 2, 3, 4];
// 每个元素乘以2
$doubled = array_map(function($value) {return $value * 2;
}, $arr);
print_r($doubled); // 输出: Array([0] => 2 [1] => 4 [2] => 6 [3] => 8)// 多个数组
$arr1 = [1, 2, 3];
$arr2 = [4, 5, 6];
$sum = array_map(function($a, $b) {return $a + $b;
}, $arr1, $arr2);
print_r($sum); // 输出: Array([0] => 5 [1] => 7 [2] => 9)

array_reduce() - 用回调函数迭代地将数组简化为单一值

$arr = [1, 2, 3, 4, 5];
// 计算总和
$sum = array_reduce($arr, function($carry, $item) {return $carry + $item;
}, 0);
echo $sum; // 输出: 15// 计算乘积
$product = array_reduce($arr, function($carry, $item) {return $carry * $item;
}, 1);
echo $product; // 输出: 120

三、文件操作函数

1. 文件读写

file_get_contents() - 将整个文件读入字符串

$content = file_get_contents("example.txt");
echo $content;// 读取远程文件
$content = file_get_contents("https://www.example.com");

file_put_contents() - 将字符串写入文件

$content = "这是要写入的内容";
file_put_contents("example.txt", $content);// 追加内容
file_put_contents("example.txt", $content, FILE_APPEND);// 锁定文件
file_put_contents("example.txt", $content, LOCK_EX);

fopen() - 打开文件或URL

// 打开文件进行读取
$file = fopen("example.txt", "r");// 打开文件进行写入(覆盖)
$file = fopen("example.txt", "w");// 打开文件进行追加
$file = fopen("example.txt", "a");// 打开文件进行读写
$file = fopen("example.txt", "r+");

fread() - 读取文件

$file = fopen("example.txt", "r");
// 读取指定字节数
$content = fread($file, filesize("example.txt"));
fclose($file);
echo $content;

fwrite() - 写入文件

$file = fopen("example.txt", "w");
fwrite($file, "这是第一行\n");
fwrite($file, "这是第二行\n");
fclose($file);

fgets() - 从文件指针中读取一行

$file = fopen("example.txt", "r");
while (!feof($file)) {$line = fgets($file);echo $line . "<br>";
}
fclose($file);

fclose() - 关闭打开的文件指针

$file = fopen("example.txt", "r");
// 操作文件...
fclose($file);

2. 文件和目录信息

file_exists() - 检查文件或目录是否存在

if (file_exists("example.txt")) {echo "文件存在";
} else {echo "文件不存在";
}

is_file()/is_dir() - 检查是否为文件/目录

if (is_file("example.txt")) {echo "这是一个文件";
}if (is_dir("mydir")) {echo "这是一个目录";
}

filesize() - 获取文件大小

echo filesize("example.txt") . " bytes";

unlink() - 删除文件

if (file_exists("example.txt")) {unlink("example.txt");echo "文件已删除";
}

mkdir() - 创建目录

// 创建单个目录
mkdir("newdir");// 创建多级目录
mkdir("parent/child/grandchild", 0777, true);

rmdir() - 删除目录

if (is_dir("emptydir")) {rmdir("emptydir");echo "目录已删除";
} else {echo "目录不存在或不为空";
}

scandir() - 列出目录中的文件和目录

$files = scandir("mydir");
foreach ($files as $file) {if ($file != "." && $file != "..") {echo $file . "<br>";}
}

四、日期和时间函数

1. 日期时间格式化

date() - 格式化本地日期和时间

// 设置时区
date_default_timezone_set("Asia/Shanghai");// 常用格式
// Y - 四位数年份 (例如: 2023)
// m - 两位数月份 (01-12)
// d - 两位数日期 (01-31)
// H - 24小时制小时数 (00-23)
// i - 分钟数 (00-59)
// s - 秒数 (00-59)echo date("Y-m-d"); // 输出: 2023-04-15
echo date("Y-m-d H:i:s"); // 输出: 2023-04-15 14:30:45
echo date("Y年m月d日 H:i:s"); // 输出: 2023年04月15日 14:30:45

time() - 返回当前时间的Unix时间戳

echo time(); // 输出: 1681545045 (取决于当前时间)

strtotime() - 将任何英文文本的日期时间描述解析为Unix时间戳

echo strtotime("now"); // 输出当前时间戳
echo strtotime("+1 day"); // 输出明天此时的时间戳
echo strtotime("+1 week"); // 输出下周此时的时间戳
echo strtotime("+1 week 2 days 4 hours 2 seconds"); // 复杂时间计算
echo strtotime("2023-04-15"); // 解析特定日期
echo date("Y-m-d", strtotime("+1 month")); // 下个月的今天

2. DateTime 类

PHP 5.2+ 提供了更强大的 DateTime 类用于日期时间处理

创建 DateTime 对象

// 当前时间
$now = new DateTime();
echo $now->format("Y-m-d H:i:s");// 特定时间
$date = new DateTime("2023-04-15 14:30:00");
echo $date->format("Y-m-d H:i:s");// 设置时区
$date = new DateTime("now", new DateTimeZone("Asia/Shanghai"));

修改日期时间

$date = new DateTime();// 增加1天
$date->modify("+1 day");
echo $date->format("Y-m-d");// 减少2小时
$date->modify("-2 hours");
echo $date->format("Y-m-d H:i:s");// 使用 DateInterval
$date->add(new DateInterval("P1M")); // 增加1个月
$date->sub(new DateInterval("P7D")); // 减少7天

计算日期差值

$start = new DateTime("2023-01-01");
$end = new DateTime("2023-12-31");
$interval = $start->diff($end);// 输出差值
echo $interval->format("%y年%m月%d天"); // 输出: 0年11月30天
echo $interval->days; // 输出: 364 (总天数)

五、HTTP请求和响应函数

1. 获取请求信息

GET/_GET/GET/_POST/$_REQUEST - 获取请求参数

// 获取URL参数 (GET请求)
$id = $_GET["id"];// 获取表单提交数据 (POST请求)
$username = $_POST["username"];
$password = $_POST["password"];// 获取GET和POST参数
$search = $_REQUEST["search"];

$_SERVER - 服务器和执行环境信息

// 获取客户端IP地址
echo $_SERVER["REMOTE_ADDR"];// 获取服务器IP地址
echo $_SERVER["SERVER_ADDR"];// 获取请求方法 (GET, POST等)
echo $_SERVER["REQUEST_METHOD"];// 获取当前脚本路径
echo $_SERVER["SCRIPT_FILENAME"];// 获取当前页面URL
echo "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];// 获取用户代理信息
echo $_SERVER["HTTP_USER_AGENT"];

2. HTTP响应控制

header() - 发送原始HTTP头

// 设置内容类型
header("Content-Type: text/html; charset=utf-8");// 页面重定向
header("Location: https://www.example.com");
exit; // 重定向后必须退出// 设置HTTP状态码
header("HTTP/1.1 404 Not Found");// 设置缓存控制
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

setcookie() - 设置Cookie

// 基本设置
setcookie("username", "张三", time() + 3600, "/"); // 有效期1小时// 带更多参数的设置
setcookie("username", // 名称"张三", // 值time() + 3600, // 过期时间"/", // 路径"example.com", // 域true, // 仅安全连接true // 仅HTTP
);

session_start() - 启动新会话或重用现有会话

// 启动会话
session_start();// 设置会话变量
$_SESSION["username"] = "张三";
$_SESSION["user_id"] = 123;// 访问会话变量
if (isset($_SESSION["username"])) {echo "欢迎回来," . $_SESSION["username"];
}// 销毁会话
session_destroy();

六、安全相关函数

1. 输入验证与过滤

filter_var() - 使用指定的过滤器过滤变量

// 验证邮箱
echo filter_var("user@example.com", FILTER_VALIDATE_EMAIL); // 输出: user@example.com
echo filter_var("invalid-email", FILTER_VALIDATE_EMAIL); // 输出: false// 验证URL
echo filter_var("https://www.example.com", FILTER_VALIDATE_URL); // 输出URL
echo filter_var("invalid-url", FILTER_VALIDATE_URL); // 输出: false// 验证IP地址
echo filter_var("192.168.1.1", FILTER_VALIDATE_IP); // 输出: 192.168.1.1// 过滤HTML标签
$html = "<p>Hello <script>alert('XSS')</script></p>";
echo filter_var($html, FILTER_SANITIZE_STRING); // 输出: Hello alert('XSS')

htmlspecialchars() - 将特殊字符转换为HTML实体

$user_input = "<script>alert('XSS')</script>";
echo htmlspecialchars($user_input); // 输出: &lt;script&gt;alert(&#039;XSS&#039;)&lt;/script&gt;// 更多参数控制
echo htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');

strip_tags() - 从字符串中去除HTML和PHP标签

$html = "<p>Hello <b>World</b></p>";
echo strip_tags($html); // 输出: Hello World// 允许特定标签
echo strip_tags($html, "<b>"); // 输出: Hello <b>World</b>

2. 密码加密

password_hash() - 创建密码的哈希值

$password = "user_password";
// 使用默认算法创建哈希值
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
echo $hashed_password;// 指定算法和成本
$hashed_password = password_hash($password, PASSWORD_BCRYPT, ["cost" => 12]);

password_verify() - 验证密码是否与哈希值匹配

$password = "user_password";
$hashed_password = "$2y$10$...";if (password_verify($password, $hashed_password)) {echo "密码正确";
} else {echo "密码错误";
}

password_needs_rehash() - 检查密码哈希是否需要重新哈希

$hashed_password = "$2y$10$...";if (password_needs_rehash($hashed_password, PASSWORD_DEFAULT)) {// 重新哈希并更新数据库$new_hash = password_hash($password, PASSWORD_DEFAULT);// 更新数据库代码...
}

七、调试和错误处理函数

1. 输出函数

print_r() - 以易于阅读的格式打印变量

$arr = ["apple", "banana", "orange"];
print_r($arr); // 输出数组结构// 在HTML中更美观地显示
echo "<pre>";
print_r($arr);
echo "</pre>";

var_dump() - 显示变量的结构信息(包括类型和值)

$arr = ["apple", "banana", 123, true];
var_dump($arr); // 详细输出数组信息

var_export() - 输出或返回变量的可解析字符串表示

$arr = ["apple", "banana"];
var_export($arr); // 输出可作为PHP代码的字符串// 获取字符串而不是输出
$str = var_export($arr, true);
echo $str;

2. 错误日志

error_log() - 发送错误消息到服务器日志或文件

// 发送到服务器错误日志
error_log("这是一条错误消息");// 发送到指定文件
error_log("这是一条错误消息", 3, "/path/to/error.log");// 发送到电子邮件
error_log("严重错误!", 1, "admin@example.com");

3. 错误处理

try/catch/finally - 异常处理

try {// 可能抛出异常的代码if ($some_condition) {throw new Exception("发生了错误");}echo "代码执行成功";
} catch (Exception $e) {// 捕获异常并处理echo "错误: " . $e->getMessage();
} finally {// 无论是否发生异常都会执行的代码echo "处理完成";
}

set_error_handler() - 设置用户定义的错误处理函数

// 自定义错误处理函数
function customErrorHandler($errno, $errstr, $errfile, $errline) {echo "错误代码: [$errno] $errstr<br>";echo "错误文件: $errfile<br>";echo "错误行号: $errline<br>";return true; // 阻止标准错误处理
}// 设置错误处理函数
set_error_handler("customErrorHandler");// 触发错误
echo $undefined_var;

八、其他常用函数

1. 类型转换与检查

intval()/floatval()/strval() - 类型转换

$num = "42";
echo intval($num); // 输出: 42 (整数)
echo floatval($num); // 输出: 42.0 (浮点数)
echo strval(42); // 输出: "42" (字符串)

is_numeric() - 检查变量是否为数字或数字字符串

echo is_numeric(42); // 输出: 1 (true)
echo is_numeric("42"); // 输出: 1 (true)
echo is_numeric("42.5"); // 输出: 1 (true)
echo is_numeric("42a"); // 输出: (空) false

empty() - 检查变量是否为空

$var = "";
echo empty($var); // 输出: 1 (true)$var = null;
echo empty($var); // 输出: 1 (true)$var = 0;
echo empty($var); // 输出: 1 (true)$var = "0";
echo empty($var); // 输出: 1 (true)$var = "false";
echo empty($var); // 输出: (空) false

isset() - 检查变量是否已设置并且不为null

$var = "hello";
echo isset($var); // 输出: 1 (true)$var = null;
echo isset($var); // 输出: (空) false// 检查数组元素是否存在
echo isset($arr["key"]);

2. 数学函数

abs() - 绝对值

echo abs(-42); // 输出: 42
echo abs(42); // 输出: 42

round() - 四舍五入

echo round(3.14159); // 输出: 3
echo round(3.14159, 2); // 输出: 3.14 (保留2位小数)
echo round(3.5); // 输出: 4
echo round(4.5); // 输出: 4 (注意PHP的四舍五入是向偶数舍入)

ceil() - 向上取整

echo ceil(3.1); // 输出: 4
echo ceil(3.9); // 输出: 4
echo ceil(-3.1); // 输出: -3

floor() - 向下取整

echo floor(3.1); // 输出: 3
echo floor(3.9); // 输出: 3
echo floor(-3.1); // 输出: -4

rand() - 生成随机整数

echo rand(); // 随机整数
echo rand(1, 10); // 1到10之间的随机整数

mt_rand() - 使用Mersenne Twister算法生成随机整数

echo mt_rand(); // 随机整数
echo mt_rand(1, 10); // 1到10之间的随机整数
// 比rand()更快、更随机

3. 其他实用函数

sleep() - 延迟执行

echo "开始";
sleep(5); // 延迟5秒
echo "5秒后";

microtime() - 返回当前Unix时间戳和微秒数

echo microtime(); // 格式: "0.123456 1681545045"// 获取微秒数用于性能测量
$start = microtime(true);
// 执行一些操作...
$end = microtime(true);
$time = $end - $start;
echo "操作耗时: " . $time . " 秒";

serialize()/unserialize() - 序列化和反序列化

// 序列化数组或对象
$arr = ["apple", "banana"];
$serialized = serialize($arr);
echo $serialized; // 输出: a:2:{i:0;s:5:"apple";i:1;s:6:"banana"}// 反序列化
$unserialized = unserialize($serialized);
print_r($unserialized); // 输出原数组

exit()/die() - 输出消息并终止脚本执行

echo "开始";
die(); // 终止脚本
echo "这不会被输出";// 带消息
die("脚本终止");// 在条件检查中使用
if (!file_exists("file.txt")) {die("文件不存在");
}

九、PHP 7+ 新增常用函数

1. 空合并运算符函数

?? 运算符 - 空合并运算符

// PHP 7+ 语法糖
$name = $_GET["name"] ?? "Guest";
// 等同于
$name = isset($_GET["name"]) ? $_GET["name"] : "Guest";

??= 运算符 - 空合并赋值运算符 (PHP 7.4+)

// 仅当变量未定义或为null时才赋值
$name ??= "Guest";
// 等同于
$name = $name ?? "Guest";

2. 数组展开运算符

… 运算符 - 数组展开运算符 (PHP 7.4+)

$arr1 = [1, 2, 3];
$arr2 = [4, 5, 6];
// 合并数组
$merged = [...$arr1, ...$arr2];
print_r($merged); // 输出: [1, 2, 3, 4, 5, 6]// 传递多个参数
function add($a, $b, $c) {return $a + $b + $c;
}
$numbers = [1, 2, 3];
echo add(...$numbers); // 输出: 6

3. 箭头函数 (PHP 7.4+)

fn() => 表达式 - 箭头函数

// 传统匿名函数
$double = function($n) {return $n * 2;
};// 箭头函数
$double = fn($n) => $n * 2;echo $double(4); // 输出: 8// 在数组函数中使用
$numbers = [1, 2, 3, 4];
$doubles = array_map(fn($n) => $n * 2, $numbers);
print_r($doubles); // 输出: [2, 4, 6, 8]// 从父作用域继承变量
$factor = 3;
$triples = array_map(fn($n) => $n * $factor, $numbers);
print_r($triples); // 输出: [3, 6, 9, 12]

十、常用函数最佳实践

  1. 字符串操作:对于包含多字节字符(如中文)的字符串,优先使用 mb_* 系列函数
  2. 数组操作:优先使用 PHP 内置数组函数,避免手动遍历实现相同功能
  3. 文件操作:对于大文件,避免使用 file_get_contents()file_put_contents(),而应使用 fopen()fread()fwrite() 等函数逐行处理
  4. 日期时间:优先使用 DateTime 类进行日期时间操作,功能更强大且不易出错
  5. 安全性:始终过滤和验证用户输入,使用参数化查询防止SQL注入,使用 password_hash()password_verify() 处理密码
  6. 调试:开发环境中使用 var_dump()print_r() 进行调试,生产环境中使用 error_log() 记录错误

通过掌握这些常用函数及其用法,可以显著提高PHP编程效率和代码质量。


文章转载自:

http://i6rhDuFc.dschz.cn
http://DT6oc1nK.dschz.cn
http://dmdOxPFw.dschz.cn
http://4eEWTHRq.dschz.cn
http://a97f1TTx.dschz.cn
http://nvYFrbhW.dschz.cn
http://6bN1cvgl.dschz.cn
http://MhfyZv39.dschz.cn
http://8krYwcT1.dschz.cn
http://6mEYaXOL.dschz.cn
http://ZzLS5cht.dschz.cn
http://HcIu7e1k.dschz.cn
http://2zhzEkuF.dschz.cn
http://C7GNJs1N.dschz.cn
http://VTxjuvQ5.dschz.cn
http://cv30YRwp.dschz.cn
http://0XYnyE8S.dschz.cn
http://nrSbxRPE.dschz.cn
http://NbRWOKYX.dschz.cn
http://kREGyiOi.dschz.cn
http://MSQdBBad.dschz.cn
http://XzLgdAZo.dschz.cn
http://Gk2cCRMj.dschz.cn
http://91SMA7XL.dschz.cn
http://iEFPS0MF.dschz.cn
http://9Q4LaJkJ.dschz.cn
http://LOVy6dpJ.dschz.cn
http://0GTglOIY.dschz.cn
http://zVq8J6Ng.dschz.cn
http://sLk4kPt7.dschz.cn
http://www.dtcms.com/a/387641.html

相关文章:

  • WordPress 网站邮件通知功能实现指南:以 WP Mail SMTP 插件与 QQ 邮箱为例
  • 【CF】Day144——杂题 (交互 + 思维 | 整除分块)
  • Unity 实验功能实现:天敌捕食猎物(含对象池 + 点击交互)
  • 【docker】——docker国内可用的源
  • React Zustand存储token报错解决方案
  • I/O 多路复用器(select、poll、epoll)与 Reactor 模式详解
  • pytorch自定义算子转tensorrt
  • Springboots上传文件的同时传递参数用对象接收
  • Next.js 中表单处理与校验:React Hook Form 实战
  • 国标GB28181视频平台EasyGBS如何解决安防视频融合与级联管理的核心痛点?
  • Web 页面 SEO 审计自动化 - 基于 n8n 和 Firecrawl
  • arcgis文件导出显示导出对象错误
  • PPT中将图片按比例裁剪
  • React + Zustand 状态管理
  • 复位开关芯片 EY412-A07E50国产低功耗延时芯片方案超低功耗
  • 动态规划-详解回文串系列问题
  • C语言基础学习(五)——进制
  • 如何在C#中将 Excel 文件(XLS/XLSX)转换为 PDF
  • 【Error】django-debug-toolbar不显示:Failed to load module script
  • Windows 版本 WDK 版本 Windows SDK Visual Studio各版本对应关系
  • WPF 快速布局技巧
  • K8S YAML 功能详解:让容器配置更灵活
  • CAD迷你看图下载安装教程(2025最新版)
  • 根据文本区域`textarea`的内容调整大小`field-sizing:content`
  • avcodec_send_packet闪退问题
  • ftrace的trace_marker使用
  • ★基于FPGA的通信基础链路开发项目汇集目录
  • SpringBoot中@Value注入失败问题解决
  • DotCore进程CPU飙高跟踪处理方案
  • PantherX2黑豹X2 armbian 编译rkmpp ffmpeg 实现CPU视频转码