2017-02-03 54 views
0

我正在使用codigniter作爲項目並需要添加導入功能。我試圖將解析的csv文件作爲數組傳遞給視圖,但是當我通過它時,數組似乎是空的。Codeigniter不傳遞數組查看

這裏是解析CSV和加載視圖

public function confirm($targetFile){ 
     $data = array(
      'import_url' => site_url(array('import', 'confirm')) 
      ); 
     $data = array(); 
     $config = new LexerConfig(); 
     $lexer = new Lexer($config); 

     $interpreter = new Interpreter(); 
     $i=0; 
     $data_array =array(); 
     $interpreter->addObserver(function(array $columns) use (&$i, &$data_array){ 
      if($i == 0){ 
       $i = $i + 1; 
      }else{ 
       array_push($data_array,$columns); 
      } 
      return $data_array; 
     } 

     ); 


     $lexer->parse($targetFile, $interpreter); 
     print_r($data_array); 
      // $j=0; 
      // while($j < sizeof($data_array)){ 
      // $valid = $this->validateRow($data_array[$j],$j); 
      // if($j == 0){ 
      //  //print_r($data_array[$j]); 
      // } 
      // if($valid){ 
      //  //echo 'true'; 
      // }else{ 
      //  //echo 'false'; 
      // } 
      // $j++; 
      // } 


     return $this->load->view('import/view',$data_array); ; 
    } 

這裏是視圖的方法

<?php $this->load->view('include/site_header'); ?> 
<?php 
    if(!empty($data_array)){ 
     foreach((array)$data_array as $data){ 
    print_r($data[0]); 
    } 
    } 
?> 
<div id="content" class="gradient gray"> 
    <h1 class="header"> 
    Import Contacts</h3> 
    <form id="import_form" action="" method="post" target="_blank"> 
     <h2 class="header"> 
     Confirm import</h3> 
     <fieldset id="fields"> 
     <div class="clearfix"> 
      <table style="width:100%;"> 
       <tr> 
        <td>fname</td> 
        <td>lname</td> 
        <td>company</td> 
       </tr> 
      </table> 
     </div> 
     </fieldset> 
    </form> 
</div> 
<?php $this->load->view('include/site_footer'); ?> 

它的有趣,因爲在法陣後不爲空它被解析。

Array ( 
    [0] => Array ([0] => 1 [1] => Kathleen [2] => L[3] => [email protected] [4] => Female [5] => 111.111.44.111) 
    [1] => Array ([0] => 2 [1] => Craig [2] => >G[3] => [email protected] [4] => Male [5] => 111.111.77.111) 
    [2] => Array ([0] => 3 [1] => Kathy [2] => R[3] => [email protected] [4] => Female [5] => 111.111.88.111) 
    [3] => Array ([0] => 4 [1] => Annie [2] => R[3] => [email protected] [4] => Female [5] => 111.111.99.111) 
    [4] => Array ([0] => 5 [1] => Chris [2] => D[3] => [email protected] [4] => Male [5] => 111.111.66.111) 
) 
+0

什麼是在'的print_r($ data_array中)輸出;'?你可以發佈輸出嗎? –

+0

我剛加了 –

+0

試試下面的答案。 –

回答

0

變化:

$this->load->view('import/view', $data_array); 

要:

$this->load->view('import/view', array("data" => $data_array)); 

然後在視圖中訪問它,如下所示:

$data[0][0]; 
0

嘗試像這樣

控制器

$data['results'] = $data_array; 
return $this->load->view('import/view',$data); 

視圖

if(!empty($results)){ 
     foreach($results as $key=>$data){ 
    print_r($data);//prints your all data ($data[0] and $data[1]) 
    } 
    }