PHP 数组函数是业务数据过滤中高效、简洁的利器,关键在于选对函数、组合使用、避免副作用。
用
array_filter()
做条件筛选
这是最常用的过滤函数,适合按规则剔除不满足条件的元素。它默认保留返回 true 的项,支持回调函数或内置常量(如
ARRAY_FILTER_USE_BOTH
可同时访问键和值)。
过滤非空且长度大于2的用户名:
保留订单金额大于0的记录:
注意:默认会重置键名,如需保留原键,加第三个参数
ARRAY_FILTER_USE_KEY
或手动用
array_values()
重索引
用
array_map()
统一清洗字段
适合对每个元素做标准化处理,比如去空格、转小写、脱敏、类型转换,为后续过滤打基础。
统一清理用户邮箱并转小写:
将字符串金额转为 float 并过滤非法值:
慎用:若映射后产生 null/false,需配合
array_filter()
二次清理
用
array_intersect_key()
和
array_diff_key()
控制字段白/黑名单
在 API 入参校验、数据库写入前字段裁剪时非常实用,不依赖值内容,只看键名是否在允许/禁止列表中。
PHP 8.5.5
PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。
下载
立即学习
“
PHP免费学习笔记(深入)
”;
只保留允许入库的字段:
剔除敏感字段(如 password、token):
比 foreach + unset 更安全,不会因键不存在报 notice,也避免遗漏嵌套结构
组合使用提升健壮性:过滤 + 验证 + 默认值
真实业务中很少单用一个函数。常见模式是先清洗、再过滤、最后补缺,形成“管道式”处理流。
示例:处理分页参数:
更清晰写法:
用 array_replace() 补默认值 → array_map() 类型转换 → array_filter() 排除非预期值
重要提醒:所有来自用户的数组($_GET、$_POST、JSON 解析结果)都应视为不可信,过滤不是可选项,而是必经步骤
array_filter($users, fn($name) => is_string($name) && strlen($name) > 2)array_filter($orders, fn($order) => $order['amount'] > 0)array_map('trim', array_map('strtolower', $emails))array_filter(array_map(fn($v) => is_numeric($v) ? (float)$v : null, $amounts))array_intersect_key($input, array_flip(['name', 'email', 'status']))array_diff_key($user, ['password' => '', 'token' => ''])$page = (int)array_filter([$input['page'] ?? 1], 'is_numeric')[0] ?? 1;