这是我的代码:
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));
它只对第一个做任何事情。
有人可以看到我的代码有什么问题吗?
由于
答案 0 :(得分:1)
当您在内循环中找到匹配项时,您正在执行return ...
。这就是为什么它只处理一个。
此外,您应该使用array_key_exists($varname, $_REQUEST)
,因为如果isset($_REQUEST[$varname])
为空,$_REQUEST[$varname]
将失败。
答案 1 :(得分:0)
return
返回您提供的任何内容,然后退出该函数。您需要以某种方式更改函数,以便在处理完所有变量后仅return
。