Php 验证数组
我想验证我的表单并将给定的值设置回输入字段 这是我发送表单时var_dump($_GET)返回的结果:Php 验证数组,php,arrays,validation,session,Php,Arrays,Validation,Session,我想验证我的表单并将给定的值设置回输入字段 这是我发送表单时var_dump($_GET)返回的结果: array(10) { ["ich_vorname"]=> string(5) "sdfdf" ["ich_name"]=> string(0) "" ["ich_strasse_nr"]=> string(0) "" ["ich_plz_ort"]=> string(0) "" ["ich_email"]=> s
array(10) {
["ich_vorname"]=> string(5) "sdfdf"
["ich_name"]=> string(0) ""
["ich_strasse_nr"]=> string(0) ""
["ich_plz_ort"]=> string(0) ""
["ich_email"]=> string(0) ""
["ich_konto_nr"]=> string(0) ""
["friend_vorname"]=> array(3) {
[0]=> string(0) ""
[1]=> string(0) ""
[2]=> string(0) ""
}
["friend_name"]=> array(3) {
[0]=> string(0) ""
[1]=> string(0) ""
[2]=> string(0) ""
}
["friend_strasse_nr"]=> array(3) {
[0]=> string(0) ""
[1]=> string(0) ""
[2]=> string(0) ""
}
["friend_plz_ort"]=> array(3) {
[0]=> string(0) ""
[1]=> string(0) ""
[2]=> string(0) ""
}
}
正如您看到的,有一些字符串和一些数组。对于字符串,我使用以下代码来确定是否设置了该值。如果设置了,那么我可以使用类似value=”“
的东西
字符串不是问题,但是数组是!动态生成字段时,如何设置数组字段的值?您可以执行类似操作来验证表单输入并将其存储在
$\u会话中
foreach($_GET as $key => $value){
if(is_array($value)){
$tmp_arr = array();
foreach($value as $v){
$v = trim($v);
if(!empty($v)){
$tmp_arr[] = $v;
}else{
$tmp_arr[] = "error";
}
}
$_SESSION[$key] = $tmp_arr;
}else{
$value = trim($value);
if(!empty($value)){
$_SESSION[$key] = $value;
}else{
$_SESSION[$key] = "error";
}
}
}
var_dump($_SESSION); // to display $_SESSION contents
只需在阵列中循环
if (empty($_GET['friend_vorname'])) {
$_SESSION['friend_vorname'] = 'error';
} else {
$_SESSION['friend_vorname'] = array_filter($_GET['friend_vorname']);
}
与其他建议类似,但这感觉更干净:
$values = $_GET;
array_walk_recursive($values, function(&$value, $key){
$value = !empty($value) ? $value : 'error';
});
将$\u GET
数组存储为$values
,并递归遍历该数组。然后你可以用$value做你想做的事情,即把它们分配给$\u会话
您可能还想考虑通过使用某种“MAP”来验证需要哪些字段,以指示哪些字段需要验证。p> 旁注:无需同时检查
isset
和!空的
。只要!空的
就可以了……在向PHP验证程序脚本发送请求后,您是否尝试使用JavaScript(因此为值=“
)验证它?所以问题是如何动态检查字段?循环通过GET
,foreach($\u GET as$name=>$value){
@chris85,它可能需要另一个循环,因为有一些数组…因此,在该foreach
中:如果(is_array($value){foreach($k=>v){}
$values = $_GET;
array_walk_recursive($values, function(&$value, $key){
$value = !empty($value) ? $value : 'error';
});