0

我只是在算法上表示我想要使用 foreach 循环和 php 中的 $_POST 数组实现的目标。

    function check_fields($_POST)
{
 // provide $_post['field1'],$_post['field2']..so on

  foreach($_POST as $_POST['FIELD 1-N'] 
{

 isvalid($_POST['FIELD1 - N']);
}
}

希望你明白我想问什么...

编辑: $_POST['FIELD1']、$_POST['FIELD1'] 等是传递给 isvalid() 函数的变量名。isvalid() 函数的作用是使用 isset() 和 empty 来检查变量是否包含值...

4

4 回答 4

2

使用foreach,您不必知道数组中键的名称。

foreach($_POST as $key => $field) {
    isvalid($field);
}

$key包含“field1”、“field2”等名称,同时$field包含$_POST数组内的值。然后 foreach 循环将对invalid()每个字段值运行该函数。

要检查是否设置了字段值:

// Sample $_POST array
$_POST = array(
    "field1" => "", // this is not set
    "field2" => "data"
);
foreach($_POST as $key => $field) {
    // You can check if it is empty using foreach alone
    if (strlen($field) > 0) {
        // this field is set
    } else {
        // this field is not set
    }
}

你也可以使用empty(),但它被视为"0"空的,所以要小心。

于 2013-02-03T15:15:39.680 回答
1

一个获取数组键和值的示例循环:

foreach( $_POST as $key => $value )
{

    isvalid( $key, $value );

}

isvalid()...因此,如果您需要获取 , 等,则需要更改函数以接受field1两个field2参数。

已编辑

$errors = array();    

foreach( $_POST as $key => $value )
    if ( empty( $value ) ) $errors[] = $key;

if ( !empty( $errors ) )
    echo 'You have errors on: <pre>' . print_r( $errors, true ) . '</pre>';

...如果$errors不为空,您可以取消提交。

于 2013-02-03T15:22:31.710 回答
1

尝试这个

foreach($_POST as $fieldName => $fieldValue) 
{
 isvalid($fieldValue);
}
于 2013-02-03T15:15:28.630 回答
0

假设您想创建一个名为isvalid;的验证函数

function isvalid($input) {
    return ('' !== trim($input));
}

// loop
$errors = arrray();
foreach ($_POST as $key => $value) {
    if (!isvalid($value)) {
        $errors[] = "$key not be empty!";
    }
}
print_r($errors);

同时,如果$_POSTinput 未设置,则不会在 foreach 中。

于 2013-02-03T15:33:36.493 回答