修剪函数的POST值

时间:2014-01-05 03:47:52

标签: php function pass-by-reference trim

我有一个函数可以验证是否设置了所有必要的参数,然后修剪这些参数。 可能吗?我怎样才能/应该为每个参考传递这些参数?

$error = false;
$error = array();

$posts = array('first_name', 'last_name', 'email',
               'telephone', 'address', 'CAP', 'city', 'comments'
                //many others
                );

$post_error = dieOrTrim(&$posts, &$error);

echo '<pre>';
echo '0'.$_POST['first_name'].'0<br />';
var_dump($error);              
var_dump($_POST);
echo '</pre>';
die();

功能:

function dieOrTrim(&$param) {
    foreach($param as &$p){
        if(!isset($_POST[$p])){
            $error[] = '$_POST['.$p.']';
            $post_error = 'ERROR';
            return $post_error;
        }else{
            $_POST[$p] = trim($_POST[$p]);
        }
    }
}

进入&#39;名字&#39; on first_name字段返回:

0 Name 0

array(0) {
}

array(18) {
  ["first_name"]=>
  string(6) " Name "
  ["last_name"]=>
  string(0) ""
  ["email"]=>
  string(0) ""
  ["telephone"]=>
  string(0) ""
  ["address"]=>
  string(3) "+41"
  ["CAP"]=>
  string(3) "(0)"
  ["city"]=>
  string(0) ""
  ["comments"]=>
  string(0) ""
  ["etc"]=>
  string(0) ""
  ["etc"]=>
  string(1) "1"
  ["etc"]=>
  string(0) ""
  ["etc"]=>
  string(0) ""
  ["etc"]=>
  string(0) ""
  ["etc"]=>
  string(0) ""
  ["etc"]=>
  string(0) ""
  ["etc"]=>
  string(0) ""
  ["etc"]=>
  string(1) "1"
  ["etc"]=>
  string(1) "1"
}

2 个答案:

答案 0 :(得分:4)

是否有任何不应修剪的值?

否则,如果$_POST不是array_map,您可以使用empty修剪所有值:

if(!empty($_POST)) {
  $_POST = array_map("trim", $_POST);
}

希望有所帮助,而不是代码:)

答案 1 :(得分:1)

我在您的功能中看到的问题是您在检查!isset($_POST[$p])后立即返回。我相信你想继续下一个项目并相应地进行操作。

function dieOrTrim($param) {
    $post_error = '';

    foreach($param as $p){
        if(!isset($_POST[$p])){
            $post_error = 'ERROR';
            continue;
        }

        // Trim $_POST[$p] if it's set
        $_POST[$p] = trim($_POST[$p]);
    }

    return $post_error;
}

此外,您不需要通过引用传递它们,因为您没有修改任何传递的参数。