我有一个包含 100 个值的数组。我想将前 10 个值插入到数据库表的第一行,即。前 10 个值(col1,col2,...col10
)代表 db 表中的 10 列。我想将下一个 10 (11-20) 插入第二行。那么如何迭代那个特定的数组呢?
我使用了 if 子句,例如 if($key % 10 == 0)
$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
}
试试这个 :
$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
}
//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();
}