PHP 常用函数实战指南:数组、字符串、时间与文件操作
在 PHP 开发过程中,熟练掌握数据结构的变换与环境交互是提升编码效率的关键。本文将从最常用的数组操作、字符串处理、日期时间控制以及文件系统接口四个维度,整理高频使用的内置函数,并通过代码实例展示其实际应用场景。
一、数组操作的常用函数
数组是 PHP 中最核心的数据结构。开发者常需进行合并、拆分、排序或遍历操作。
1. 数组构建与拆分
implode(分隔符, $arr):将数组元素用指定字符连接成字符串。explode(分隔符, $str)(别名join):按规则将字符串切割为数组。array_merge($arr1, $arr2):合并多个数组,后面的数组覆盖前面的同键名元素。array_combine($keys, $values):需注意:使用一个数组的值作为键名,另一个数组的值作为值来创建新数组。若两数组长度不一致则报错。array_chunk($input, $size, $preserve_keys):将数组分割成多个子数组。第三个参数$preserve_keys设为 true 时可保留原键名,默认为 false。
2. 搜索、去重与指针操作
array_search($value, $arr):搜索给定值并返回对应的键名(注意不是索引),未找到返回 false。array_unique($arr):移除重复值并重新索引数组。array_flip($arr):交换数组中的键和值。警告:如果值的类型不对(如非标量),对应的键值对将被忽略。- 数组指针移动:在处理关联数组时非常有用。包括
key()(获取当前键)、current()(获取当前值)、next()(指向下一个)、reset()(重置到第一个单元)。
示例:遍历查找特定值的键名
$array = array (
'fruit1' => 'apple',
'fruit2' => 'orange',
'fruit3' => 'grape',
'fruit4' => 'apple'
);
// 循环遍历,找出值为 "apple" 的键名
while ($fruit_name = current($array)) {
if ($fruit_name == 'apple') {
echo key($array) . '<br>'; // 输出 fruit1, fruit4
}
next($array);
}
二、字符串处理核心函数
字符串处理涵盖了清洗、截取、替换及正则匹配。
1. 基础清洗与转换
trim($str)/rtrim($str):去除首尾或右侧空格及常用不可见字符。addslashes($str):在预定义字符前添加反斜杠转义(适用于数据库插入前的预处理)。strlen($str):获取字符串长度。strtolower($str)/strtoupper($str):全小写 / 全大写。ucfirst($str)/ucwords($str):首字母大写 / 每个单词首字母大写。strcmp($str1, $str2):二进制安全字符串比较,相等返回 0。
2. 截取与查找
substr($str, $start, $length):截取从$start开始的指定长度子串。strpos($haystack, $needle):返回$needle首次出现的偏移量(从 0 开始),不存在返回 false。strstr($haystack, $needle):返回从首次出现位置到末尾的子串。str_replace($search, $replace, $subject):执行全局替换。
3. 正则表达式处理
当涉及复杂模式匹配时,PCRE 函数族是标准选择:
preg_match($pattern, $subject, $matches):执行一次匹配,结果存入$matches,其中$matches[0]为完整匹配内容。preg_match_all($pattern, $subject, $matches):全局匹配所有结果。preg_replace($pattern, $replacement, $subject):搜索并替换匹配的子串。preg_split($pattern, $subject):用正则分割字符串。preg_grep($pattern, $array):过滤数组,仅保留匹配模式的元素。
三、日期与时间 API
PHP 时间处理依赖于时间戳(Unix Timestamp)与本地时间的相互转换。建议在脚本开头使用 date_default_timezone_set('Asia/Shanghai') 设置时区以避免“格林威治标准时间差8小时”的问题。
1. date() 格式化输出
date(格式, 时间戳) 是最常用的函数。核心修饰符说明:
| 格式符 | 描述 | 示例输出 |
|---|---|---|
Y | 四位年份 | 2023 |
y | 两位年份 | 23 |
m, n | 月份(带/不带前导零) | 01, 1 |
d, j | 日期(带/不带前导零) | 05, 5 |
H, G | 24小时制(带/不带前导零) | 09, 9 |
h, g | 12小时制(带/不带前导零) | 09, 9 |
a/A | AM/PM | am, AM |
其他常用格式化指令:
L:是否闰年(1 为真,0 为假)。D:星期缩写(Mon);l:星期全称(Monday)。W:ISO-8601 一年中的第几周。t:当月天数(28~31);z:当年第几天(0~365)。c:ISO 8601 标准日期(2007-02-06T14:24:43+00:00)。U:时间戳(1970年至今的秒数)。
2. 时间转换与计算
strtotime($string):将英文可读时间字符串转换为时间戳。例如strtotime("-1 day")得到昨天的时间戳。mktime(hour, minute, second, month, day, year):生成对应本地时间的时间戳。getdate(timestamp):返回包含各时间部分的关联数组。checkdate(month, day, year):验证日期是否合法(如 2月30日会返回 false)。
示例:常见时间段计算
$now = time();
// 昨天
$yesterday = date("Y-m-d", strtotime("-1 day"));
// 本周开始(周日/周一取决于环境默认,通常为周一)
$this_week_start = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d") - date("w") + 1, date("Y")));
// 本月结束日期号
$last_day_of_month = date("t");
$current_month_end = mktime(23, 59, 59, date("m"), $last_day_of_month, date("Y"));
四、文件操作常用函数
文件I/O操作是后台开发与爬虫场景的基础。
1. 信息查询与状态判断
file_exists($filename):文件或目录是否存在。filesize($filename):文件大小(字节)。pathinfo($filename):返回包含dirname、basename和extension的数组。
2. 文件内容的读写
根据性能需求和场景,有几种不同的访问方式:
- 一次性读取整个文件:
file_get_contents($filename)。最简单的方式,适合中小文件。 - 一次性写入整个文件:
file_put_contents($filename, $content)。类似fwrite但无需先打开资源句柄。 - 流式/逐行读取(大文件推荐):
fopen($filename, $mode):打开文件,$mode常用:r(只读),w(只写/清空),a(追加)。fgets($handle):逐行读取。fread($handle, $length):按字节数读取。fwrite($handle, $string):写入内容。fclose($handle):**重要**:操作完成后务必关闭句柄释放资源。
3. 目录与移动操作
mkdir($dirname, $permissions):创建目录。rmdir($dirname):删除空目录。rename($oldname, $newname):支持文件重命名及路径移动。unlink($filename):永久删除文件。copy($source, $dest):复制文件。
以上即为 PHP 数组、字符串、时间和文件四大板块的核心功能总结。这些内置函数覆盖了绝大多数日常开发场景,熟练运用能极大减少冗余代码编写。
以上就是基于 PHP 常用函数的详细内容,更多关于 PHP 高级用法及优化的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













