【问题标题】:foreach loop for many array insert values用于许多数组插入值的 foreach 循环
【发布时间】:2015-12-05 07:09:58
【问题描述】:

你好,我有大约 5 个具有相同元素的数组,我想将数组的每个值插入到数据库中,例如

 $array1 has 3 elements a1,a2,a3
 $array2 has 3 elements b1,b2,b3
 $array3 has 3 elements c1,c2,c3

now i want to insert data into database like field1=a1,field2=b1,field3=c1
 and similery for all the values saparete entry will be there

请帮助我实现这一目标 我知道这可以通过 php 的 foreach 循环来完成

【问题讨论】:

  • 你试过什么?您可以使用foreach($array1 as $key => $value) 并使用$array2[$key] 引用其他数组中的键来获取相应的值吗?
  • 我想你只是在这里问了一个问题stackoverflow.com/questions/34101823/…@Sonam 小姐?

标签: php arrays foreach


【解决方案1】:

您可以为此使用 SPL's MultipleIteratorprepared statements

<?php
$array1 = [ 'a1','a2','a3' ];
$array2 = [ 'b1','b2','b3' ];
$array3 = [ 'c1','c2','c3' ];

$mi = new MultipleIterator;
foreach( array($array1,$array2,$array3) as $a) {
    $mi->attachIterator( new ArrayIterator($a) );
}

//$pdo = new PDO( ..., array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION));
//$stmt = $pdo->prepare('INSERT INTO foo (x,y,z) VALUES (?,?,?)');   
foreach( $mi as $rec ) {
    //$stmt->execute( $rec );
    echo join(', ', $rec), "\r\n";
}

打印

a1, b1, c1
a2, b2, c2
a3, b3, c3

【讨论】:

    【解决方案2】:

    假设你有 5 个数组如下:

    $a = array(1,2,3);
    $b = array(11,22,33);
    $c = array(11,22,33);
    $d = array(11,22,33);
    $e = array(11,22,33);
    

    创建字段数组;

    $fields = array('field1','field2',...);
    

    你可以形成如下的数据串,

    $counter =0;
    $str = array();
    for($i=0;$i<count($a);$i++)
    {
      $str []= "$fields[counter] = '$a[$i]'";
      $counter++;
       $str []= "$fields[counter] = '$b[$i]'";
        $counter++;
      $str []= " $fields[counter] = '$c[$i]'";
        $counter++;
      $str []= "$fields[counter]= '$d[$i]'";
        $counter++;
      $str []= "$fields[counter]= '$e[$i]'";
        $counter++;
    
    }
     $data = implode(',',$str);
    

    然后执行sql查询

    insert into 'table_name' $data 
    

    【讨论】:

      【解决方案3】:

      因此,每个数组中都有相同数量的元素。因此,循环将为每个数组运行相同的时间。

      首先,找到任何数组的大小。

      $arraySize=sizeof($arr1); 我假设 $arr1 是 Ist 数组。

      其次,现在循环它。

      for($i=0;$i<$arraySize;$i++)
      {
          $arr1=$arr1[$i];
          $arr2=$arr2[$i];
          $arr3=$arr3[$i];
          $arr4=$arr4[$i];
          $arr5=$arr5[$i];
      
          $InsertQuery="INSERT INTO TableName SET field1='$arr1', field2='$arr2', field3='$arr3',field4='$arr4',field5='$arr5'";
          //Execute Your Query Here
      }
      

      【讨论】:

        【解决方案4】:

        首先计算数组中的项目。

        正如您提到的,三个数组中的元素数量相同。因此,我们只需要计算任何一个数组中的数组数量。让我们把$array1 带到这里。使用count($array1) 给出元素计数。假设它给出3 作为计数。

        现在循环 3 次,如下所示。

        for($i = 0; $i < count($array1); $i++){
            // QUERY HERE
            insert into sometable (field1, field2, field3) VALUES ($array1[$i], $array2[$i], $array3[$i]);
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-06-19
          • 2012-01-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-07-25
          • 1970-01-01
          • 2015-12-25
          相关资源
          最近更新 更多