我建立了一个空的关联数组,其键名指的是提交的帖子数据。我可以很好地捕获 postdata,但是在尝试实例化名称与数组键匹配的变量时遇到了麻烦。
例如:
$insArray = array('rUsername'=>'', 'rPass'=>'', 'rQuestion'=>'', 'rAnswer'=>'', 'rFName'=>'', 'rLName'=>'', 'rBDateD'=>'', 'rBDateM'=>'', 'rBDateY'=>'', 'rHCheck'=>'', 'rHCeckOption'=>'', 'rEmail'=>'');
foreach($insArray as $key=>$value){
if (filter_input(INPUT_POST, $key) != ''){
$key = stripslashes(filter_input(INPUT_POST, $key));
$insArray[$key] = $key;
}
}
第一行创建空数组,然后 foreach 循环遍历该数组。现在变得棘手了。
filter_input(INPUT_POST, $key)
捕获位于与当前键匹配的帖子数据中的值,在这种情况下为 rUsername
$key
是问题所在。我希望新变量的 NAME 是关联键名,例如,我想在第一次迭代中将 $key 替换为 $rUsername,在第二次迭代中替换为 $rPass,依此类推。我尝试使用两个 $$,但我知道这是不对的。以前从未尝试过这样做,但如果我能弄清楚会有所帮助。
更新:
这是最终代码,它是所提供的两个答案的组合。
if (isset($_POST['submit'])) {
//Build array of variables to be put into database
$insArray = array('rUsername'=>'', 'rPassword'=>'', 'rQuestion'=>'', 'rAnswer'=>'', 'rFName'=>'', 'rLName'=>'', 'rBDateD'=>'', 'rBDateM'=>'', 'rBDateY'=>'', 'rHCheck'=>'', 'rHCheckOption'=>'', 'rEmail'=>'');
foreach(array_keys($insArray) as $key){
$insArray[$key] = filter_input(INPUT_POST, $key);
$$key = filter_input(INPUT_POST, $key);
}
}
给了我想要的输出,谢谢大家!