在我搜索并尝试了许多检查/验证多维数组的替代方案后,我放弃了,我决定在这里打开一个新线程(问一个问题)。所以,让我告诉你我到目前为止的进展.
我有一个表格,通过_POST,在多维数组中提交信息。帖子后的数组如下所示:
Array (
[0] => Array (
[Name] => First Name
[Birthday] => 01-02-2016
[BirthPlace] => PB1
[passNr] => Pass1
[passFrom] => 15-02-2016
[passTo] => 28-08-2016
[seatNr] => 16
[seatCode] => 6_4
[nrPax] => 1
)
[1] => Array (
[Name] => Second Name
[Birthday] => 02-02-2016
[BirthPlace] => PB2
[passNr] => Pass2
[passFrom] => 16-02-2016
[passTo] => 29-08-2016
[seatNr] => 15 [seatCode] => 6_3
[nrPax] => 1
)
[2] => Array (
[Name] => Third Name
[Birthday] => 03-02-2016
[BirthPlace] => PB3
[passNr] => Pass3
[passFrom] => 17-02-2016
[passTo] => 30-08-2016
[seatNr] => 14
[seatCode] => 6_2
[nrPax] => 1
)
[3] => Array (
[Name] => Fourth Name
[Birthday] => 04-02-2016
[BirthPlace] => PB4
[passNr] => Pass4
[passFrom] => 18-02-2016
[passTo] => 31-08-2016
[seatNr] => 13
[seatCode] => 6_1
[nrPax] => 1
)
)
我需要做的是验证是否所有项目都已提交/其中是否有任何项目为空/空。我试过这个:
foreach ($_POST['traveler'] as $vf) {
if(empty($vf['Name'])) {echo "Missing Name.<br />";}
if(empty($vf['Birthday'])) {echo "Missing Birthday.<br />";}
if(empty($vf['BirthPlace'])) {echo "Missing BirthPlace.<br />";}
if(empty($vf['passNr'])) {echo "Missing passNr.<br />";}
if(empty($vf['passFrom'])) {echo "Missing passFrom.<br />";}
if(empty($vf['passTo'])) {echo "Missing passTo.<br />";}
if(!empty($vf['Name']) && !empty($vf['Birthday']) && !empty($vf['BirthPlace']) && !empty($vf['passNr']) && !empty($vf['passFrom']) && !empty($vf['passTo']) ) { echo "Everything OK. Do the insertion in the mysql";}
}
问题是,如果多维数组中有 3 个数组,msg "Everything OK..." 出现三次;如果是 4 个数组,则出现 4 次......因此,如果我进行 sql 插入,它将被添加与数组一样多的次数。另外,我应该提到 Birthday、passFrom 和 passTo 是日期的输入字段,如果用户让它们为空白,而不是填充它们,则这些字段将以 php 默认日期 01.01.1970 出现;在这种情况下,如何验证用户是否正确填写了表单?
提前感谢,希望我清楚地解释了这个问题。
对于多维数组,您应该在父循环中使用循环。
像这样:
$Array = array(
array('f1'=>1,'f2'=>2,'f3'=>3),
array('f4'=>4,'f5'=>5,'f6'=>6),
array('f7'=>7,'f8'=>8,'f9'=>9)
);
foreach($Array as $key => $val){
foreach($val as $key_2 => $val_2){
if (empty($val_2)){
echo $key_2 . 'is empty';
}
}
}