我有一个函数可以验证是否设置了所有必要的参数,然后修剪这些参数。 可能吗?我怎样才能/应该为每个参考传递这些参数?
$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"
}
答案 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;
}
此外,您不需要通过引用传递它们,因为您没有修改任何传递的参数。