После того, как я искал и попробовал много альтернатив для проверки / проверки многомерного массива, я сдался и решил открыть новую ветку (задал вопрос) здесь. Итак, позвольте мне показать вам мой прогресс до сих пор.
У меня есть форма, которая, _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 массива, сообщение «Все в порядке …» появляется три раза; если 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';
}
}
}
Других решений пока нет …