我有以下代码,当设置$_POST
值时,这些代码将按预期运行,但是,如果没有设置$_POST
值(第一次加载页面时的IE),我会得到"Warning: Invalid argument supplied for foreach() in..."
$_POST
始终为空,直到用户单击提交。我试过empty()
、isset()
,现在又试过count()
。
if(isset($_POST['submitbtn'])){
$errors = CheckFormErrors();
if(count($errors) == 0){
$data = CleanFormData();
print_r($data);
}
}
以下是正在调用的函数(尚未完成,但正在运行):
function CleanFormData(){
foreach($_POST as $key => $value){
if($key == 'description'){ continue; }
if($key == 'file'){ continue; }
if($key == 'role'){ continue; }
$_POST[$key] = is_array($key) ? $_POST[$key]: strip_tags($_POST[$key]);
}
return $_POST;
}
我想我可以把这个错误放在一个条件语句中,显然这是不正确的。帮个忙?
如注释中所述,在调用foreach
之前(在函数内部),而不是在函数外部,您必须检查超全局$_POST
是否为空-这样,您就不必每次调用此函数时都检查!empty($_POST)
。
function CleanFormData() {
if (!empty($_POST)) {
foreach($_POST as $key => $value) {
// Loops here
}
}
return $_POST;
}