2016-03-26 2 views
0

Я пытаюсь вставить данные массива, используя insert_batch в активной записи, как показано ниже: Любые идеи для подготовки массива к вставке с использованием insert_batch или любым другим способом?Как создать массив insert_batch в Codeigniter

$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

Большое вам спасибо, Это то, чего я действительно хочу. –

Смежные вопросы