当包含它的函数依赖于$ _POST数据时,如何禁止此foreach警告

时间:2015-11-09 15:27:27

标签: php function foreach

我有以下代码在设置$_POST值时按预期运行,但是,如果没有设置"Warning: Invalid argument supplied for foreach() in..."值(首次加载页面时的IE),我得到$_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;
}

这是被调用的函数(尚未完成,但它正在工作):

service httpd restart

我认为我可以通过将其置于条件语句中来抑制错误,显然这是不正确的。一点帮助?

1 个答案:

答案 0 :(得分:1)

正如评论中已经说明的那样,你必须在调用$_POST本身(在函数内部)之前检查超全局foreach是否为空,而不是在函数之外 - 这样你就不会这样做。每次调用此函数时都必须检查!empty($_POST)

function CleanFormData() {
    if (!empty($_POST)) {
        foreach($_POST as $key => $value) {
            // Loops here
        }
    }
    return $_POST;
}