循环遍历多维$ _GET

时间:2016-07-13 19:09:29

标签: php arrays multidimensional-array

是否可以循询$_GET请求或$_POST请求中的所有内容? 我知道可以执行foreach循环,但完全包含Array值。

我想要做的是清理$_GET$_POST全局变量中的每个字符串,以便它们可以在数据class中使用。

我也知道我可以做foreach($user_data['permissions']...之类的事情,但我不会知道$_GET$_POST变量中的所有内容。

1 个答案:

答案 0 :(得分:0)

array_walk_recursive()可以帮到你;但是,它有一个严重的缺陷:

  

任何包含数组的键都不会传递给函数。

这意味着如果你有这样的东西:

$_GET = array(
    'foo' => 'bar',
    'permissions' => array(
        'abc' => 123
    )
);

您会看到foo => barabc => 123,但您不知道permissions.abc => 123。如果您只需要清理所有值(独立于[嵌套]键),那么这并不重要。如果这很重要,您可能最好自己实施。像这样:

foreach($_GET as $key => $value) {
    if(is_array($value)) {
        foreach($value as $sKey => $sValue) {
            // sanitize
        }
    } else {
        // sanitize
    }
}

这甚至可以变成一个可以递归循环的函数,但是我会把它告诉你。基本上你只需将上面的内容放在sanitizeData()函数中,然后在数组sanitizeData()的值的任何时候调用is_array()函数。