2016-03-26 71 views
0

我試圖在活動記錄中使用insert_batch插入數組數據,如下所示:使用insert_batch或任何其他方式準備插入數組的任何想法?如何在Codeigniter中創建insert_batch數組

$detailBill=array(
     'TraineeID'=>$inputall['ID'], 
     'wDate'=>$inputall['wDate'], 
     'ACH'=>$inputall['Hour'], 
     'CRA'=>$inputall['Retention'], 
     'Amount'=>$inputall['PaybleAmt'], 
     'forMonth'=>$inputall['monthid'] 
    ); 

$this->db->insert_batch("tbl_submit_coursefee", $detailBill); 

輸出:

Array 
(
    [TraineeID]=> Array 
    (
     [0]=>3001 
     [1]=>3002 
     [2]=>3003 
     [3]=>3004 
     [4]=>3005 
     [5]=>3006 
     [6]=>3007 
     [7]=>3008 
     [8]=>3009 
     [9]=>3010 
     [10]=>3011 
     [11]=>3012 
     [12]=>3013 
    ) 
    [wDate]=> Array 
    (
     [0]=> 
     [1]=> 
     [2]=> 
     [3]=> 
     [4]=> 
     [5]=> 
     [6]=> 
     [7]=> 
     [8]=> 
     [9]=> 
     [10]=> 
     [11]=> 
     [12]=> 
    ) 
    more field here.... 
) 
+0

這是一個有點混亂,你現在在做什麼,在在https://codeigniter.com/user_guide/database/query_builder.html#inserting-data手動再次檢查。它很好地解釋了你的數組結構應該如何看起來像 – Vickel

回答

1

我假設您要重新組織陣列。試試這個:

$a = array(
    'TraineeID' => array(
     3001, 
     3002 
    ), 
    'wDate' => array(
     '123', 
     '234' 
    ), 
    'Hour' => array(
     12, 
     13 
    ) 
); 

$keys = array_keys($a);//counting outer array 

if(count($keys[0]) > 0)//checking if inner array has values at all 
{ 
    $new_a = [];//initializing expecting array 

    foreach($a[$keys[0]] as $k => $v) 
    { 
     for($i = 0; $i < count($keys); $i++) 
     { 
      $new_a[$k][$keys[$i]] = $a[$keys[$i]][$k]; 
     } 
    } 
} 

//echo '<pre>', var_dump($new_a); 
+0

非常感謝,這正是我真正想要的。 –