老实说,这是我编写过的最挑剔和最笨拙的语言。当这个项目很好并且结束时,我会很高兴。
无论如何,我必须使用 PHP,所以这是我的问题。
我有一个名为 $form_data 的数组:
$form_data = array
('trav_emer_med_insur',
'trav_emer_single',
'trav_emer_single_date_go',
'trav_emer_single_date_ba',
'trav_emer_annual',
'trav_emer_annual_date_go',
'trav_emer_extend',
'trav_emer_extend_date_go',
'trav_emer_extend_date_ef',
'trav_emer_extend_date_ba',
'allinc_insur',
'allinc_insur_opt1',
'allinc_single_date_go',
'allinc_single_date_ba',
'allinc_insur_opt2',
'allinc_annual_date_go',
'allinc_annual_date_ba',
'cancel_insur',
'allinc_annual_date_go',
'allinc_annual_date_ba',
'visitor_insur',
'country_select',
'visitor_supervisa',
'visitor_supervisa_date_go',
'visitor_supervisa_date_ba',
'visitor_student',
'visitor_student_date_go',
'visitor_student_date_ba',
'visitor_xpat',
'visitor_xpat_date_go',
'visitor_xpat_date_ba',
'txtApp1Name',
'txtApp2Name',
'txtApp1DOB',
'txtApp2DOB',
'txtApp1Add',
'txtApp1City',
'selprov',
'txtApp1Postal',
'txtApp1Phone',
'txtApp1Ext',
'txtApp1Email',
'conpref', );
这些是 HTML 表单上的 name="" 字段的名称。我已经使用 var_dump($_POST) 验证了所有名称都存在并且默认值为 ''。
我想要做的很简单,使用 $form_data 作为参考这样做:
- 创建一个名为 $out_data 的新数组,它可以处理要在反流表单上显示的数据。
$out_data 的结构很简单,例如,键是另一个数组 $out_data[txtApp1Name] 中元素的名称,然后该键的值就是值。
现在我想要的是首先检查是否设置了每个 name="" ,以消除错误并验证数据。然后不管是否设置,在 $out_data 数组中创建它的占位符。
因此,如果 $_POST[$form_data[1]] (name is 'trav_emer_single') 未设置,则在 $out_data 中创建一个类似于 $out_data([trav_emer_single] => "NO DATA") 的条目
如果设置了 $_POST[$form_data[1]] (name is 'trav_emer_single'),则在 $out_data 中创建并输入如下所示: $out_data([trav_emer_single] => "whatever the user type in")
我试过这段代码:
$out_data = array();
$count = count($form_data);
for( $i = 0; $i < $count; $i++ )
{
if(!isset($_POST[$form_data[$i]])) {
$out_data[$form_data[$i]] = "NO_DATA";
}
else {
$out_data[$form_data[$i]] = $_POST[$form_data[$i]];
}
}
现在这段代码在技术上是有效的,它正在遍历数组并分配值,但它没有正确执行。
我在没有输入任何内容的情况下点击了提交。因此,每个项目都应该在我的反刍输出上显示“NO_DATA”(供用户查看),但是只有一些项目在说它。我确认的所有项目都有 name="" 并与数组匹配,并且没有输入任何内容。为什么没有将“NO_DATA”分配给数组中的每个项目?
另外值得注意的是,如果我完全填写表格 $out_data 已完全正确填充。!isset 有什么问题?我试过做 $_POST[$form_data[$i]] == '' 它确实把 no_data 放在没有数据的每个实例中,但是无论我写什么,它都会为页面上的每个项目引发“未定义索引”警告在盒子里与否。
真的我只是想知道 WTF 正在进行中,这个项目的最后期限正在快速关闭,PHP 的每一步都让我感到悲伤。
据我通过阅读我的代码可以看出是有效的,但拒绝像宣传的那样执行。
如果您需要更多代码示例,请询问。
真的很困惑,没有错误,没有任何工作,请帮助。
谢谢-肖恩