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 ...当您在内部循环中找到匹配项时,您正在执行此操作。这就是为什么它只处理一个。

此外,您应该使用array_key_exists($varname, $_REQUEST),因为如果为 nullisset($_REQUEST[$varname])将失败。$_REQUEST[$varname]

于 2012-10-22T00:10:10.990 回答
0

return返回你给它的任何东西,并退出函数。您需要以某种方式更改您的函数,以便它仅return在处理所有变量之后。

于 2012-10-22T00:10:36.657 回答