PHP内置函数有哪些常用_PHP常用函数汇总【汇总】

2次阅读

php函数掌握靠查文档和踩坑,而非死记硬背;官方文档、错误信息搜索、用户笔记及细节差异(如参数顺序、类型转换、时区配置)才是关键。

PHP内置函数有哪些常用_PHP常用函数汇总【汇总】

PHP内置函数不是靠背下来的,是靠查文档+踩坑记熟的;别信“常用函数汇总”这种标题,真写业务时你只会记得 Array_filterjson_encodepreg_match 这几个,其他全靠 php.net 搜。

查函数别翻“汇总表”,直接去 php.net 搜错误信息或功能关键词

你遇到 Warning: Invalid argument supplied for foreach(),第一反应不该是“哪个函数能修 foreach”,而是搜这个错误本身——结果页里会直接带出 is_arrayissetgettype 的用法示例。官方文档每个函数页底部都有“User Contributed Notes”,比任何中文教程都真实,比如 date 函数下有人贴出时区不生效的 7 种写错姿势。

  • 搜索优先级:错误信息 > 功能描述(如“截取字符串”) > 函数名(如“substr”)
  • 别信第三方整理的“50个必学函数”,str_replacestrtr 行为差异大到能引发线上 bug,但汇总表从不提
  • PHP 8.0+ 新增的 str_starts_withstr_contains 已替代一 strpos === 0 写法,老汇总表根本没它们

array_* 系列函数参数顺序反直觉,不记清就容易传错

PHP 数组函数的参数顺序没统一逻辑:array_mapcallback, arrayarray_filter 却是 array, callback,而 array_reduce 又变成 array, callback, initial。传反了不会报错,但结果为空或错乱,调试时极难定位。

  • array_filter($arr, $callback) —— 数组在前,回调在后;漏掉第二个参数会过滤掉所有 falsy 值(0、”、NULL 都没了)
  • array_map($callback, $arr) —— 回调在前,数组在后;如果传反,PHP 会把数组当回调,报 Warning: First argument is expected to be a valid callback
  • 带键操作的函数(如 array_walk)默认不保留原数组,要修改必须用引用 &$item,否则白写

JSON 和类型转换函数最容易埋兼容性雷

json_encode 默认不处理中文字符(输出 uXXXX),json_decode 默认返回 stdClass 对象而非数组,这两个点上线后被骂最多。还有 (int) 强转和 intval() 在处理超长数字时行为不一致,PHP 7.4+ 甚至改过 floatval 解析科学计数法的精度。

立即学习PHP免费学习笔记(深入)”;

  • json_encode($data, JSON_UNESCAPED_UNICODE | JSON_INVALID_UTF8_SUBSTITUTE) 才算生产环境可用的基础配置
  • json_decode($json, true) 的第二个参数 true 别省,否则后续用 $obj->key 会报错
  • filter_var($input, FILTER_VALIDATE_INT)is_numeric(int) 更可靠,尤其对 "123abc" 这种混合字符串

正则、文件、时间函数本地环境和线上常不一致

preg_matchwindows 上默认不支持 u 修饰符(UTF-8),file_get_contents 读取远程 URL 时,本地开 allow_url_fopen=On,但 docker 容器或阿里云函数可能默认关;date('Y-m-d') 输出依赖服务器时区,不是代码里设了 date_default_timezone_set 就万事大吉——CLI 和 FPM 的 php.ini 可能加载不同配置。

  • 检查时区:运行 php -r "echo date_default_timezone_get();",别只信代码里的 date_default_timezone_set
  • 读远程文件优先用 curl 扩展,file_get_contents 的超时、重试、ssl 验证都难控
  • 正则测试别只在本地写死字符串,用真实用户输入(含换行、、emoji)跑一遍,mb_ereg 已废弃,坚持用 preg_match + u 修饰符

真正卡住你的从来不是“有哪些函数”,而是 json_encode 没加标志位、array_filter 忘写回调、date 时区配错 php.ini —— 这些细节不在任何汇总表里,只在你 deploy 失败的那一刻才突然变得无比清晰。

text=ZqhQzanResources