數(shù)據(jù)插入的方法我們都知道直接寫(xiě)成一條語(yǔ)句比較快悦冀,但是如果我們想實(shí)現(xiàn)每多少條插入一次數(shù)據(jù)趋翻,要用到一點(diǎn)小小的算法
場(chǎng)景:每三條數(shù)據(jù)插入一次,比如此處有11條數(shù)據(jù)盒蟆。會(huì)余兩條腰處理
1.每次遍歷將數(shù)組存入一個(gè)新的數(shù)組嘿歌。
2.處理九條數(shù)據(jù)掸掏。
3.在9條數(shù)據(jù)處理的if
語(yǔ)句里,如果有三條數(shù)據(jù)宙帝,就做一次插入丧凤,并置空新數(shù)組。
4.處理9條數(shù)據(jù)之外的數(shù)據(jù)步脓。如果鍵等于最大的鍵愿待,則插入那個(gè)數(shù)組
// 這種處理方式有點(diǎn)偏差 但是結(jié)果是一樣的
$arr = [0,1,2,3,4,5,6,7,8,9,10];
$num = 3;
$count = floor(count($arr)/$num)*$num; //取分割點(diǎn)的整數(shù) 此處是9
$countNum = count($arr)-1; //10
foreach ($arr as $key => $data){
$newArray[] =array('name'=>$data);
if($key<=$count ) {
if ($key % $num == 0) {
DB::table('test')->insert($newArray);
// 插入數(shù)據(jù)后要置空數(shù)組
$newArray = array();
}
}else {
if ($key==$countNum){
DB::table('test')->insert($newArray);
}
}
}
- 如果要本文所寫(xiě)的結(jié)果 應(yīng)該以下代碼
$arr = [0,1,2,3,4,5,6,7,8,9,10];
$num = 3;
$count = floor(count($arr)/$num)*$num; //取五百的整數(shù)
$countNum = count($arr);
foreach ($arr as $key => $data){
$newArray[] =array('name'=>$data);
$key = $key+1;
if($key<=$count ) {
if ($key % $num == 0) {
DB::table('test')->insert($newArray);
// 插入數(shù)據(jù)后要置空數(shù)組
$newArray = array();
}
}else {
if ($key==$countNum){
$sql = DB::table('test')->insert($newArray);
if ($sql){
return response()->json(['serverTime'=>time(),'ServerNo'=>1,'data'=>['message'=>'數(shù)據(jù)接收完畢']]);
}else{
return response()->json(['serverTime'=>time(),'ServerNo'=>0,'data'=>['message'=>'數(shù)據(jù)有丟失']]);
}
}
}
}
2.以上是使用框架的形式,直接傳遞數(shù)組靴患。那么如果我們直接使用原聲的寫(xiě)法來(lái)看下
$array = [
['name1','email1'],
['name2','email2'],
['name3','email3'],
];
$values = '';
foreach ($array as $user){
$values.= "('$user[0]','$user[1]')";
}
echo $values;
得到的是這個(gè)結(jié)果
('name1','email1')('name2','email2')('name3','email3')
根本的原則是仍侥,雙引號(hào)中單引號(hào)里面的變量是可以解析的