1

だから私はMVCを使い始めました。フレームワークは使いません。あとは自己練習です。

だから、これは私の登録部分です:

    protected function _instance()
    {
        if ($_POST != null)
        {
            /**
            * Validating if forms are not empty
            **/

            if (self::validateForms())
            {
                echo 1;
            }
            else
            {
                new Error("One of the forums was empty..");
            }
        }
    }

    private static function validateForms()
    {
        $inputs = array (
            'username', 'password', 'repassword',
            'email', 'password_f', 'repassword_f',
            'display'
        );

        $i = 0;

        foreach ($inputs as $key)
        {
            if (isset($_POST[$key]) && !empty($_POST[$key]))
            {
                $i++;
                if ((int) $i == count($inputs))
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }
    }

入力が設定されているかどうかのみを確認する必要があり、設定されていない場合はエラーをスローします。しかし、常にそのエラーが発生するため、機能しないようです。

$i入力がいっぱいになるたびに成長する必要がありますが、そうではないと思います。

echo を実行する$iと、「1」のみがエコーされます。

なぜ一度だけループするのですか?

4

2 に答える 2

3

問題は、最初のテストの後にループ内に戻っていることです。

    foreach ($inputs as $key)
    {
        if (isset($_POST[$key]) && !empty($_POST[$key]))
        {
            $i++;
            if ((int) $i == count($inputs))
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }

する必要があります

    foreach ($inputs as $key)
    {
        if (isset($_POST[$key]) && !empty($_POST[$key]))
        {
            $i++;
        } 
    }
    if ((int) $i == count($inputs))
    {
       return true;
    }
    else
    {
        return false;
    }

またはもっと簡潔に

    foreach ($inputs as $key)
    {
        if (!isset($_POST[$key]) || empty($_POST[$key]))
        {
            return false;
        } 
    }
    return true;
于 2013-07-18T18:16:25.507 に答える
0

$iすべての入力が循環した後に実際に設定された数をチェックするように、チェックをループから外す必要があります。それ以外の場合は、初めてチェックし、等しくないことを確認して false を返します。

foreach ($inputs as $key)
{
    if (isset($_POST[$key]) && !empty($_POST[$key]))
    {
        $i++;
    }
}
if ((int) $i == count($inputs))
{
    return true;
}
else
{
    return false;
}
于 2013-07-18T18:20:04.483 に答える