0

これが私のコードです:

function prepare_machine($variables)
{
        foreach ($variables AS $varname => $vartype)
        {
                if (isset($_REQUEST[$varname]))
                {
                        $value = $_REQUEST[$varname];
                        return do_clean($value, $vartype);
                }
                else
                        exit;
        }
}

次のように呼び出されます。

prepare_machine(array('order_by_time' => TYPE_BOOLEAN));

すべて正常に動作しますが、たとえば、配列に複数のものがある場合;

prepare_machine(array('order_by_time' => TYPE_BOOLEAN, 'order_by_date' => TYPE_BOOLEAN));

最初のものだけで何もしません。

私のコードの何が問題なのか誰にもわかりますか?

ありがとう

4

2 に答える 2

1

return ...内側のループで一致が見つかったときに実行しています。そのため、1 つしか処理しません。

また、null の場合は失敗するarray_key_exists($varname, $_REQUEST)ため、使用する必要があります。isset($_REQUEST[$varname])$_REQUEST[$varname]

于 2012-10-22T00:10:10.990 に答える
0

return指定したものを返し、関数を終了します。returnすべての変数を処理した後にのみ s になるように、何らかの方法で関数を変更する必要があります。

于 2012-10-22T00:10:36.657 に答える