当包含foreach警告的函数依赖于$_POST数据时,如何抑制该警告


How do I suppress this foreach warning when the function that contains it relies on $_POST data

我有以下代码,当设置$_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;
}