PHP 常用函数实战指南:数组、字符串、时间与文件操作

Cora
Cora
发布时间:2026-10-14 | 3人浏览过
原创

在 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, G24小时制(带/不带前导零)09, 9
h, g12小时制(带/不带前导零)09, 9
a/AAM/PMam, 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 高级用法及优化的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表