Php 验证数组

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

我想验证我的表单并将给定的值设置回输入字段

这是我发送表单时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"]=> 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';
});