У меня есть этот PHP-код для вставки данных из моего;Нужно пропустить пропустить/игнорировать отсутствующий массив
$i = 1;
foreach ($_POST['form'] as $val => $form){
$Style = $_POST['form'][$i]['style'];
$Dim= $_POST['form'][$i]['Dim'];
$Colour= $_POST['form'][$i]['Colour'];
$Quantity= $_POST['form'][$i]['Quantity'];
$stmt = $db->prepare("INSERT INTO orders(Cus_ID, Style, Dimensions, Colour, Quantity) VALUES(:Cus_ID,:Style,:Dimensions,:Colour,:Quantity)");
$stmt->execute(array(':Cus_ID' => $Cus_ID, ':Style' => $Style, ':Dimensions' => $Dim, ':Colour' => $Colour, ':Quantity' => $Quantity));
$i++;
}
Когда я отправляю свою форму, var_dump дает мне что-то вроде этого;
array (size=3)
'form' =>
array (size=3)
1 =>
array (size=4)
'style' => string '0' (length=1)
'Dim' => string '0' (length=1)
'Colour' => string '0' (length=1)
'Quantity' => string '' (length=0)
2 =>
array (size=4)
'style' => string '0' (length=1)
'Dim' => string '0' (length=1)
'Colour' => string '0' (length=1)
'Quantity' => string '' (length=0)
3 =>
array (size=4)
'style' => string '0' (length=1)
'Dim' => string '0' (length=1)
'Colour' => string '0' (length=1)
'Quantity' => string '' (length=0)
'submit' => string 'Place Order' (length=11)
Все хорошо и денди, но когда я удалить часть моей формы поданное Арай будет в конечном итоге что-то вроде этого;
array (size=2)
'form' =>
array (size=2)
1 =>
array (size=4)
'style' => string '0' (length=1)
'Dim' => string '0' (length=1)
'Colour' => string '0' (length=1)
'Quantity' => string '' (length=0)
3 =>
array (size=4)
'style' => string '0' (length=1)
'Dim' => string '0' (length=1)
'Colour' => string '0' (length=1)
'Quantity' => string '' (length=0)
'submit' => string 'Place Order' (length=11)
На что PHP пробует ввести «» 2-й массив, который не существует, можно иметь в PHP пропустить/игнорировать "любые массивы, которые отсутствуют (массив неограниченны и любые случайные номер может отсутствовать)
Да, но почему вы даже используете '$ i'? Вы делаете 'foreach ($ _ POST ['form'] как $ key => $ form), поэтому просто обращайтесь к' $ form' напрямую. – meagar
Добавьте 'if (! Isset ($ _ POST ['form'] [$ i])) continue;' в самом начале внутри вашего цикла. Это то, чего вы хотите, но это не то, что вы должны делать. Читайте в ['foreach loop'] (http://php.net/manual/en/control-structures.foreach.php) – Leri