100 個の値を持つ配列があります。データベーステーブルの最初の行に最初の10個の値を挿入したい. 最初の 10 個の値 ( col1,col2,...col10
) は、db テーブルの 10 列を表します。そして、次の 10 (11-20) を 2 行目に挿入したいと思います。では、その特定の配列を反復するにはどうすればよいでしょうか?
if($key % 10 == 0) のようなif句を使用しました
$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
}
//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();
}
これを試して :
$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
}