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内に値が含まれます。$_POSTforeach ループは、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

配列のキーと値の両方を取得する 1 つのサンプル ループ:

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

    isvalid( $key, $value );

}

...そのため、、、などを取得する必要がある場合は、2 つのパラメーターを受け入れるように関数を変更する必要がありますisvalid()field1field2

編集済み

$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

as という名前の検証関数を作成しようとしていると仮定します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);

一方、$_POST入力が設定されていない場合、foreach には含まれません。

于 2013-02-03T15:33:36.493 に答える