PHP:foreach和数组问题

时间:2010-10-06 15:40:07

标签: php arrays foreach

我有这个:

foreach($_POST as $key => $value) {
    $data[$key] = filter($value);
}

filter();剥离任何标签,真正逃脱它们。

现在我在POST表单中也有一个数组,所以我在strip_tags()mysql_real_escape_string中收到错误。我应该如何仅$_POST["Searching"]仅过滤filter();

4 个答案:

答案 0 :(得分:3)

您可以使用array_walk_recursive

array_walk_recursive($_POST,'filter');

并使您的函数filter通过引用获取值:

function filter(&$value) {
  // apply strip_tags and real escape to $value.
  $value = mysql_real_escape(strip_tags($value));
}

答案 1 :(得分:1)

首先,您可以使用array_map()来加快速度,您需要做的就是允许函数识别数组并递归调用自身。

function filter( $inVar ){
  if( is_array( $inVar ) )
    return array_map( 'filter' , $inVar );
  return mysql_real_escape( strip_tags( $inVar ) );
}

然后这样称呼它:

$data = array_map( 'filter' , $_POST );

答案 2 :(得分:0)

使用is_array()

foreach($_POST as $key => $value) {
    if (!is_array($value))
       $data[$key] = filter($value);
}

答案 3 :(得分:0)

<?php
foreach($_POST as $key => $value){
    if(!is_array($_POST[$key])){
        $data[$key] = filter($value);
    }else{
        $data[$key] = $value;
    }
}
?>