2

フォームの必須フィールドをチェックする小さな関数を作成しました。空ではありません。この関数は2つの引数を受け入れます。1つ目は$_POSTスーパーグローバルからのすべての値を持つ配列です。2つ目は、入力する必須フィールド配列です。

見てください:

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

上記の回答は、PHP5.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 に答える