-2

我有一个包含 100 个值的数组。我想将前 10 个值插入到数据库表的第一行,即。前 10 个值(col1,col2,...col10)代表 db 表中的 10 列。我想将下一个 10 (11-20) 插入第二行。那么如何迭代那个特定的数组呢?

我使用了 if 子句,例如 if($key % 10 == 0)

4

3 回答 3

6
$my_array = array('a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b',);

$splited_array = array_chunk($my_array, 10);

foreach ($splited_array as $new_array) {

  print_r($new_array);
  // insert a new row with value of $new_array
}
于 2013-02-27T05:07:55.967 回答
0

试试这个 :

$res    = array();
$row    = 0;
for($i=0;$i<count($array);$i++){
   if($i % 10 == 0 && $i != 0){
      $row++;
   }
   $res[$row][]  = $array[$i];
}

echo "<pre>";
print_r($res);

foreach($res as $val){
    $col1   = $val[0];
    $col2   = $val[1];
    ..... //// so on
    $col10   = $val[9];

    Insert into databse
}
于 2013-02-27T05:06:31.060 回答
0
//I assume you get this by magic
$inarray = array(...)

//create your command and specify your bound parameters
$stmt = $dbh->prepare("INSERT INTO table (c1, c2, cn..., c10) VALUES (:c1, :c2, ..., :c10)");
$stmt->bindParam(':c1', $c1);
$stmt->bindParam(':c2', $c2);
//...
$stmt->bindParam(':c10', $c10);

//loop over the array, hopping ten items at a time
for ($i = 0; $i < 100; $i += 10)
{
    // update the value of the bound parameter
    $c1 = $inarray[$i + 0];
    $c2 = $inarray[$i + 1];
    //...
    $c10 = $inarray[$i + 9];
    //execute the insert
    $stmt->execute();
}
于 2013-02-27T05:11:29.997 回答