Bol*_*lli 1 php csv validation
对于可怕的标题抱歉,让我试着解释一下.
我写了一堆小函数,它们返回true或false.
validateName()
validateEmail()
validateAddr()
validateBirtd()
validateUsername()
Run Code Online (Sandbox Code Playgroud)
现在我循环使用CSV文件导入的大量数据,并检查哪些数据有效(返回true或false).
我是这样做的:
if (validateName($data[0]) == true AND validateEmail($data[1]) == true AND validateAddr($data[3]) == true AND validateBirtd($data[5]) == true AND validateUsername($data[6])==true) {
// create array to import etc etc
}else{
// create other array with data who failed validation, to show user later..etc etc
}
Run Code Online (Sandbox Code Playgroud)
我的问题是 - 有更聪明的方法吗?是否可以为每个失败的验证创建一个列表?假设3个entrys使validateEmail()函数失败,而10都失败了validateEmail和validateName().
我是否有办法对此进行排序,以便告诉用户"这些托管失败的电子邮件验证"和"这些失败的名称和电子邮件验证".
我想过一次验证一个字段,但是如果一个条目有多个验证错误,我会有重复.
如果有某种逻辑我不知道我能做到这一点,那会很酷
你可以创建一个函数.
function validate($data) {
$errors = array();
$fields = array('Name', 'Email', 'Addr', 'Birtd', 'UserName');
foreach ($fields as $i => $field) {
$func = 'validate'.$field;
if (!$func($data[$i])) {
$errors[] = $field;
}
}
return $errors;
}
$errors = validate($data);
if (empty($errors)) {
// create array to import etc etc
} else {
// errors
echo 'There are errors with ' . implode(',', $errors);
}
Run Code Online (Sandbox Code Playgroud)