[英]Codeigniter not passing array to view
我正在为项目使用codigniter,需要添加导入功能。 我正在尝试将解析的csv文件作为数组传递给视图,但是当我传递该数组时,该数组似乎为空。
这是解析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] => k@mysite.com [4] => Female [5] => 111.111.44.111 )
[1] => Array ( [0] => 2 [1] => Craig [2] => >G[3] => c@site.com [4] => Male [5] => 111.111.77.111)
[2] => Array ( [0] => 3 [1] => Kathy [2] => R[3] => k@site.net [4] => Female [5] => 111.111.88.111)
[3] => Array ( [0] => 4 [1] => Annie [2] => R[3] => a@any.net [4] => Female [5] => 111.111.99.111 )
[4] => Array ( [0] => 5 [1] => Chris [2] => D[3] => c@blabla.com [4] => Male [5] => 111.111.66.111 )
)
更改:
$this->load->view('import/view', $data_array);
至:
$this->load->view('import/view', array("data" => $data_array));
然后在视图中像这样访问它:
$data[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])
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.