我正在获取一些$ _POST变量并将它们放在一个数组中,如下所示:
foreach (array_keys($_POST) as $key) {
$clean[$key] = mysql_real_escape_string($_POST[$key]);
}
结果是这样的数组:
Array
(
[pers_anrede] => Frau
[pers_titel] => Dr.
[pers_vorname] => BLa
[pers_nachname] => blablabla
[pers_vorwahl] => 0123
[pers_telefon] => 3456789
[job_bundesland] => Berlin
[job_plz] =>
[job_ort] =>
[job_str] =>
)
现在,我想做的是某种形式的简单验证。如果上面数组的元素具有任何值,则其错误设置为false。如果缺少元素的值,则将其错误设置为true。我想得到一个这样的数组(保留上面的示例数据,只有最后三个元素会产生错误:
Array
(
[pers_anrede] => false
[pers_titel] => false
[pers_vorname] => false
[pers_nachname] => false
[pers_vorwahl] => false
[pers_telefon] => false
[job_bundesland] => false
[job_plz] => true
[job_ort] => true
[job_str] => true
)
使用这个数组我希望能够做这样的事情等等:
if $error['pers_anrede'] == true {
$error_message = 'please correct blabla';
}
感谢帮忙
答案 0 :(得分:1)
foreach ($clean as $k => $value) {
$errors[$k] = empty($value);
}
答案 1 :(得分:0)
您可以使用几个数组函数来获取新数组中出错的项的所有键:
$data = array(
'pers_anrede' => 'Frau',
'pers_titel' => null,
'pers_vorname' => 'BLa',
);
$filtered = array_filter($data);
$error = array_combine(array_keys(array_diff_key($data, $filtered)),
array(true));
然后:
if(isset($error['pers_titel'])) {
// blah
}
<强> See it in action 强>
答案 2 :(得分:0)
再过一次foreach循环应该很容易。
假设您将数组存储在$ array中。
foreach($array as $key => $value) {
if($value == NULL){
$array[$key] = true;
}else{
$array[$key] = false;
}
}
答案 3 :(得分:0)
为了进行验证,您仍需要预约$error
数组。
因此,更简单地进行这样的验证:
foreach ($clean as $key=>$value) {
if (empty($value)) {
$error_message .= "$key field is required<br/>";
}
}
答案 4 :(得分:0)
只需使用
foreach ($clean as $k => $value) {
$validate[$k] = ($value == "")?true:false;
}
空或默认的array_filter函数将为您可能不需要的零值返回false。
如果var具有非空和非零值,则返回FALSE。
以下内容被认为是空的:
"" (an empty string) 0 (0 as an integer) 0.0 (0 as a float) "0" (0 as a string) NULL FALSE array() (an empty array) var $var; (a variable declared, but without a value in a class)
答案 5 :(得分:-1)
这将循环遍历clean数组的键并加载一个错误数组,如果它们为空则存储为true:
foreach ( array_keys( $clean ) as $key )
$error[$key] = empty( $clean[$key] );
或者如果您不想使用数组键:
foreach ( $clean as $key => $value )
$error[$key] = empty( $value );