Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 需要foreach跳过/忽略缺少的数组_Php - Fatal编程技术网

Php 需要foreach跳过/忽略缺少的数组

Php 需要foreach跳过/忽略缺少的数组,php,Php,我有这个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'];

我有这个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)
一切都很好,但是当我删除我的表格的一部分时,提交的表格就会变成这样

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尝试输入不存在的“第二个”数组,是否可以让php“跳过/忽略”任何缺少的数组(数组是无限的,任何随机数都可能缺少)

是的,只要没有设置当前索引,就可以

但是,您根本没有理由使用
$i
。编写
foreach
循环是为了让您能够以
$form
的形式访问每个表单,因此只需使用
$form


是的,这是可能的,只要不设置当前索引即可

但是,您根本没有理由使用
$i
。编写
foreach
循环是为了让您能够以
$form
的形式访问每个表单,因此只需使用
$form


在foreach中,您不需要使用
$i
$val
是子数组的键
$form
是子阵列,可以用作:

foreach ( $_POST['form'] as $val => $form ){   
    $Style = $form['style'];
    $Dim= $form['Dim'];
    $Colour= $form['Colour'];
    $Quantity= $form['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));  

}

所以,为了回答您的问题,foreach永远不会到达缺少的数组。它循环遍历数组元素,因此,如果数组有两个元素,它将迭代两次。如果数组有三个元素,它将迭代3次,以此类推。

在foreach中,您不需要使用
$i
$val
是子数组的键
$form
是子阵列,可以用作:

foreach ( $_POST['form'] as $val => $form ){   
    $Style = $form['style'];
    $Dim= $form['Dim'];
    $Colour= $form['Colour'];
    $Quantity= $form['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));  

}

所以,为了回答您的问题,foreach永远不会到达缺少的数组。它循环遍历数组元素,因此,如果数组有两个元素,它将迭代两次。如果数组有三个元素,它将迭代3次,以此类推。

是的,但为什么还要使用
$i
?您正在对每个($\u POST['form']作为$key=>$form)执行
操作,因此直接访问
$form
。如果(!isset($\u POST['form'][$i])继续,请添加
在循环的最开始处。这是你想要的,但不是你应该做的。请仔细阅读是的,但为什么你还要使用
$i
?您正在对每个($\u POST['form']作为$key=>$form)
执行
操作,因此直接访问
$form
。如果(!isset($\u POST['form'][$i])继续,请添加
在循环的最开始处。这是你想要的,但不是你应该做的。通读