如何在Codeigniter中创建insert_batch数组

时间:2016-03-26 18:03:19

标签: codeigniter activerecord

我尝试在活动记录中使用insert_batch插入数组数据,如下所示:准备使用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....
)

1 个答案:

答案 0 :(得分: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);