2

我写了一个小函数来检查表单的必填字段,不为空。该函数接受两个参数,第一个是一个包含来自 $_POST 超全局的所有值的数组。第二个是我填充的必填字段数组。

看一看:

public $errors = array();

public function validate_fields($fields_array, $required_fields) 
{
    foreach ($required_fields as $key => $value)
    {
        if (array_key_exists($key, $fields_array)) 
        {
            # If key exists in $fields_array
            # check that the key value inside $fields_array is set & isn't empty
            # if it's empty, populate with an error
            if(empty($fields_array[$key][$value]))
            {
                $this->errors[] = "{$key} is empty but in fields_array";
            }
        }
        else 
        {
            # Key does not exists in $fields_array
            # Did someone temper with my html ?
            $this->errors[] = "{$key} is not in fields_array";
        }
    }
    return (empty($this->errors)) ? true : false;
}     

我遇到的问题似乎与“if(empty($fields_array[$key][$value]))”语句有关。我的目标是根据 $required_fields 键检查 $fields_array 键值是否为空。我确定我使用的语句是关闭的。如果你看到任何你认为可以写得更好的东西,请告诉我,因为我是 php 新手。感谢帮助。

4

3 回答 3

4

我认为你想要做的是:

if(empty($fields_array[$key])) {
    //this means value does not exist or is FALSE
}

如果您还只想检查空字符串或空格,那么您需要的不仅仅是空的。例如

if(empty($fields_array[$key]) || !trim($fields_array[$key]))         {
    //this means key exists but value is null or empty string or whitespace only
}
于 2013-02-13T00:23:42.683 回答
3

请注意,上述答案仅适用于 >PHP 5.4 中的索引数组。如果你有一个关联数组,你必须使用 isset 而不是空的:

if(isset($fields_array[$key]) && trim($fields_array[$key]) != '')

请参阅http://nl3.php.net/manual/en/function.empty.php,示例 #2

于 2014-06-10T12:51:15.040 回答
2

您不需要选择该值作为索引键。其中 $fields_array[$key] = $value;

if(empty($fields_array[$key]) && trim($fields_array[$key]) != '')
于 2013-02-13T00:17:44.527 回答