本文分享了国外网站统计的 PHP 代码中最常用的100个函数,该排名参考了 1900 个 PHP 开源项目。
排名中的平均值是在一个项目中调用此函数的次数。比如说,5 个项目里面有 4 个用到了 count 函数,函数被调用大概 150 次。
榜单
排行 | 函数 | 说明 | 频率 | 平均值 |
---|---|---|---|---|
1 | count | 统计数组、Countable 对象中所有元素的数量 | 81.41 % | 147.67 |
2 | is_array | 检测变量是否是数组 | 77.32 % | 117.86 |
3 | substr | 返回字符串的子串 | 74.62 % | 142.92 |
4 | in_array | 检查数组中是否存在某个值 | 74.16 % | 79.55 |
5 | explode | 使用一个字符串分割另一个字符串 | 73.19 % | 71.51 |
6 | str_replace | 子字符串替换 | 72.32 % | 101.05 |
7 | implode | 用字符串连接数组元素 | 72.27 % | 66.59 |
8 | strlen | 获取字符串长度 | 70.07 % | 98.32 |
9 | array_merge | 合并一个或多个数组 | 69.46 % | 64.01 |
10 | strpos | 查找字符串首次出现的位置 | 67.98 % | 78.18 |
11 | preg_match | 执行匹配正则表达式 | 67.31 % | 76.60 |
12 | sprintf | 返回格式化字符串 | 67.16 % | 119.46 |
13 | trim | 去除字符串首尾处的空白字符(或者其他字符) | 66.75 % | 81.28 |
14 | strtolower | 将字符串转化为小写 | 65.99 % | 59.62 |
15 | file_exists | 检查文件或目录是否存在 | 65.12 % | 45.13 |
16 | is_string | 检测变量是否是字符串 | 61.39 % | 45.10 |
17 | preg_replace | 执行一个正则表达式的搜索和替换 | 60.27 % | 54.28 |
18 | file_get_contents | 将整个文件读入一个字符串 | 59.96 % | 20.71 |
19 | array_key_exists | 检查数组里是否有指定的键名或索引 | 59.70 % | 57.50 |
20 | array_keys | 返回数组中部分的或所有的键名 | 59.35 % | 39.59 |
21 | dirname | 返回路径中的目录部分 | 56.44 % | 54.84 |
22 | function_exists | 检查函数是否已定义 | 53.58 % | 42.62 |
23 | array_map | 为数组的每个元素应用回调函数 | 53.22 % | 19.45 |
24 | get_class | 返回对象的类名 | 53.12 % | 33.07 |
25 | class_exists | 检查类是否已定义 | 52.50 % | 23.13 |
26 | is_object | 检测变量是否是一个对象 | 51.94 % | 35.35 |
27 | time | 返回当前的 Unix 时间戳 | 51.79 % | 41.42 |
28 | json_encode | 对变量进行 JSON 编码 | 51.48 % | 24.81 |
29 | date | 格式化一个本地时间/日期 | 50.72 % | 52.18 |
30 | is_null | 检测变量是否为 null |
49.69 % | 60.52 |
31 | is_numeric | 检测变量是否为数字或数字字符串 | 49.49 % | 40.69 |
32 | array_shift | 将数组开头的单元移出数组 | 49.49 % | 23.28 |
33 | defined | 检查某个名称的常量是否存在 | 48.72 % | 86.82 |
34 | is_dir | 判断给定文件名是否是一个目录 | 48.57 % | 22.86 |
35 | json_decode | 对 JSON 格式的字符串进行解码 | 48.42 % | 17.39 |
36 | header | 发送原生 HTTP 头 | 48.16 % | 59.71 |
37 | strtoupper | 将字符串转化为大写 | 47.80 % | 30.95 |
38 | array_values | 返回数组中所有的值 | 47.24 % | 17.27 |
39 | md5 | 计算字符串的 MD5 散列值 | 46.88 % | 23.74 |
40 | method_exists | 检查类的方法是否存在 | 46.73 % | 19.05 |
41 | file_put_contents | 将一个字符串写入文件 | 46.68 % | 12.49 |
42 | rtrim | 删除字符串末端的空白字符(或者其他字符) | 45.91 % | 18.08 |
43 | array_pop | 弹出数组最后一个单元(出栈) | 45.51 % | 20.60 |
44 | unlink | 删除文件 | 44.59 % | 23.55 |
45 | basename | 返回路径中的文件名部分 | 44.59 % | 27.23 |
46 | realpath | 返回规范化的绝对路径名 | 44.08 % | 15.90 |
47 | call_user_func | 把第一个参数作为回调函数调用 | 43.97 % | 16.41 |
48 | call_user_func_array | 调用回调函数,并把一个数组参数作为回调函数的参数 | 43.92 % | 18.40 |
49 | fopen | 打开文件或者 URL | 43.77 % | 25.61 |
50 | microtime | 返回当前 Unix 时间戳和微秒数 | 43.46 % | 14.41 |
51 | fclose | 关闭一个已打开的文件指针 | 42.85 % | 28.36 |
52 | is_int | 检测变量是否是整数 | 42.75 % | 15.78 |
53 | is_file | 判断给定文件名是否为一个正常的文件 | 42.08 % | 20.52 |
54 | array_slice | 从数组中取出一段 | 41.83 % | 13.20 |
55 | preg_match_all | 执行一个全局正则表达式匹配 | 40.55 % | 14.66 |
56 | ucfirst | 将字符串的首字母转换为大写 | 40.25 % | 17.02 |
57 | intval | 获取变量的整数值 | 40.19 % | 88.13 |
58 | str_repeat | 重复一个字符串 | 40.14 % | 19.51 |
59 | serialize | 产生一个可存储的值的表示 | 40.14 % | 22.05 |
60 | array_filter | 使用回调函数过滤数组的元素 | 39.99 % | 13.87 |
61 | mkdir | 新建目录 | 39.79 % | 11.17 |
62 | is_callable | 检测参数是否为合法的可调用结构 | 39.43 % | 11.94 |
63 | ltrim | 删除字符串开头的空白字符(或其他字符) | 39.17 % | 10.90 |
64 | ob_start | 打开输出控制缓冲 | 39.12 % | 13.26 |
65 | round | 对浮点数进行四舍五入 | 39.07 % | 28.56 |
66 | fwrite | 写入文件(可安全用于二进制文件) | 38.97 % | 23.39 |
67 | array_unique | 移除数组中重复的值 | 38.87 % | 15.96 |
68 | array_search | 在数组中搜索给定的值,如果成功则返回首个相应的 键名 |
38.82 % | 14.19 |
69 | reset | 将数组的内部指针指向第一个单元 | 38.71 % | 20.79 |
70 | array_unshift | 在数组开头插入一个或多个单元 | 38.10 % | 10.32 |
71 | parse_url | 解析 URL,返回其组成部分 | 37.90 % | 9.61 |
72 | func_get_args | 返回一个包含函数参数列表的数组 | 37.79 % | 28.33 |
73 | end | 将数组的内部指针指向最后一个单元 | 37.49 % | 12.70 |
74 | base64_encode | 使用 MIME base64 对数据进行编码 | 37.39 % | 14.15 |
75 | unserialize | 从已存储的表示中创建 PHP 的值 | 37.18 % | 18.35 |
76 | max | 找出最大值 | 36.98 % | 22.88 |
77 | preg_split | 通过一个正则表达式分隔字符串 | 36.98 % | 13.27 |
78 | gettype | 获取变量的类型 | 36.93 % | 16.16 |
79 | strrpos | 计算指定字符串在目标字符串中最后一次出现的位置 | 36.67 % | 11.95 |
80 | version_compare | 对比两个「PHP 规范化」的版本数字字符串 | 36.67 % | 14.87 |
81 | array_push | 将一个或多个单元压入数组的末尾(入栈) | 36.67 % | 26.18 |
82 | floor | 舍去法取整 | 36.11 % | 18.78 |
83 | strtotime | 将任何字符串的日期时间描述解析为 Unix 时间戳 | 36.01 % | 27.94 |
84 | htmlspecialchars | 将特殊字符转换为 HTML 实体 | 35.96 % | 51.08 |
85 | ini_get | 获取一个配置选项的值 | 35.85 % | 19.25 |
86 | ini_set | 为一个配置选项设置值 | 35.60 % | 14.49 |
87 | chr | 返回指定的字符 | 35.34 % | 186.97 |
88 | extension_loaded | 检查一个扩展是否已经加载 | 35.29 % | 14.17 |
89 | is_bool | 检测变量是否是布尔值 | 35.24 % | 11.44 |
90 | ksort | 对数组根据键名升序排序 | 34.98 % | 10.82 |
91 | array_reverse | 返回单元顺序相反的数组 | 34.93 % | 8.27 |
92 | ord | 转换字符串第一个字节为 0-255 之间的值 | 34.73 % | 53.17 |
93 | uniqid | 生成一个唯一ID | 34.68 % | 9.83 |
94 | strtr | 转换指定字符 | 34.47 % | 12.90 |
95 | array_diff | 计算数组的差集 | 34.32 % | 11.13 |
96 | error_reporting | 设置应该报告何种 PHP 错误 | 34.17 % | 8.99 |
97 | ceil | 进一法取整 | 33.35 % | 11.99 |
98 | urlencode | 编码 URL 字符串 | 33.30 % | 29.63 |
99 | min | 找出最小值 | 32.69 % | 18.31 |
100 | print_r | 以易于理解的格式打印变量。 | 32.64 % | 14.12 |
分析
- 最常用的 PHP 函数是字符串函数,然后是数组函数,接着是文件函数。 (运算函数不在此列主要是因为他们通常基于运算符)
- 每个函数的链接都指向其对应的文档,事实上许多函数经过发展以及获得了许多新特性,例如:
count()
的第二个参数,dirname()
的第二个参数以及preg_match()
和str_replace()
接受数组作为参数等。 - 以上 100 个函数没有近期要废弃的计划。
- 在非内置库中,
mbstring
排名第一、curl
第二,然后是gd、filter 和 iconv
。 md5
是最常用的加密函数,其次是Sha1
,不过目前由于这两个函数依赖的算法已不足够复杂,不推荐用来对明文密码加密。print_r
出现在 1/3 的项目代码里面的某处 …- 由于
dirname(dirname(dirname()))
的调用,dirname 的使用频率非常高。 array、echo、print、empty、isset
这些没有纳入此排名,它们的使用度肯定是非常高的。- 如下几个函数应该用运算符替代 :
array_push
,is_object
,func_get_arg
,chr
,call_user_func
。 - 相当多的调用是为了知道值的类型。
- 数据库函数没有在这里排名:他们经常使用类,但功能仍然很频繁。
- PHP代码倾向于读取文件而不是写入文件。
- 使用键排序比使用值或使用键更频繁。
- 通常使用
file_get_contents
读取文件, 使用fwrite
写入文件。