
PHP 数组数据校验的核心,是明确“要校验什么”和“不符合时怎么处理”,而不是一上来就写一堆 isset() 或 empty()。
明确校验目标:字段、类型、规则三要素缺一不可
一个有效的校验必须说清三点:哪个键(字段)、它该是什么类型(字符串/整数/数组等)、满足什么业务规则(非空、长度范围、是否在预设值内)。比如接收用户注册数据:['name' => '张三', 'age' => '25', 'gender' => 'male'],不能只检查 name 是否存在,还要确认:
– name 是字符串且长度 2–20;
– age 是整数且在 1–120;
– gender 是字符串且只能是 'male' 或 'female'。
分层校验:先结构,再类型,后业务逻辑
按顺序逐层过滤,避免无效判断:
-
结构校验:用
array_key_exists()检查必填键是否存在(比isset()更严谨,能识别null值); -
类型校验:用
is_string()、is_int()、is_numeric()等判断原始类型,必要时配合filter_var()转换并验证(如filter_var($age, FILTER_VALIDATE_INT)); -
业务校验:对已确认类型的数据做进一步约束,例如用
strlen()验证长度、in_array()校验枚举值、正则匹配格式(邮箱、手机号)。
错误收集优于立即中断
一次性返回所有错误,比遇到第一个错就停止更友好。可初始化一个空数组 $errors = [],每项校验失败时追加提示,例如:if (!in_array($data['gender'], ['male', 'female'])) { $errors[] = '性别必须是 male 或 female'; }
最后根据 count($errors) 判断是否通过,并返回完整错误列表供前端或日志使用。
DESTOON B2B网站管理系统是一套完善的B2B(电子商务)行业门户解决方案。系统基于PHP+MySQL开发,采用B/S架构,模板与程序分离,源码开放。模型化的开发思路,可扩展或删除任何功能;创新的缓存技术与数据库设计,可负载千万级别数据容量及访问。
立即学习“PHP免费学习笔记(深入)”;
复用校验逻辑:用配置驱动,避免硬编码
把规则抽成配置数组,让校验函数通用化。例如:
$rules = [
'name' => ['required' => true, 'type' => 'string', 'min' => 2, 'max' => 20],
'age' => ['required' => true, 'type' => 'int', 'min' => 1, 'max' => 120],
'gender' => ['required' => true, 'type' => 'string', 'in' => ['male', 'female']],
];
再写一个通用校验器遍历执行,后续新增字段只需改配置,不改主逻辑。










