Php 读取codeigniter 3中的CSV数据只需给出一个空数组
我正在使用CI3开发我的应用程序。我的情况是,有一个文件的csv扩展名如下:Php 读取codeigniter 3中的CSV数据只需给出一个空数组,php,codeigniter,csv,Php,Codeigniter,Csv,我正在使用CI3开发我的应用程序。我的情况是,有一个文件的csv扩展名如下: NO,EIR IN,CONT,TYPE,INDEPO,JAM,KODE VSL,VESSEL,VOY,CONSIG,COND IN,CLEAN,TARE,GROSS,KAPASITAS,EX CARGO,LAST AIR),LAST HIDRO,MANU,BUILDER,OWNER 1,1545053 ,EOLU 1111111,XXXX,21-11-2015,13:00,ABO,ALBERT OLDEND
NO,EIR IN,CONT,TYPE,INDEPO,JAM,KODE VSL,VESSEL,VOY,CONSIG,COND IN,CLEAN,TARE,GROSS,KAPASITAS,EX CARGO,LAST AIR),LAST HIDRO,MANU,BUILDER,OWNER
1,1545053 ,EOLU 1111111,XXXX,21-11-2015,13:00,ABO,ALBERT OLDENDORFF ,N001 ,ASTABUMI CIPTA ,DMG,DIRTY, 2400, 20000, 5000,FOOD , - - , - - ,10-11 ,
2,1545052 ,EOLU 1234567,IM04,21-11-2015,10:00,202,WAN HAI 202 ,N 001 ,ANUGERAH AGUNG LUMIN,AVL,DIRTY, 2400, 20000, 1000,MAKANAN , - - , - - ,11-13 , ,APL
$this->load->library('csvreader');
$data = array('halaman' => 'Data Container',
'csvData' => $this->csvreader->parse_file(base_url('assets/csv/ZIL.csv')));
$main_view = $this->load->view('surveyor/v_container', $data, TRUE);
echo $main_view;
我一直在努力阅读它。我的控制器是这样的:
NO,EIR IN,CONT,TYPE,INDEPO,JAM,KODE VSL,VESSEL,VOY,CONSIG,COND IN,CLEAN,TARE,GROSS,KAPASITAS,EX CARGO,LAST AIR),LAST HIDRO,MANU,BUILDER,OWNER
1,1545053 ,EOLU 1111111,XXXX,21-11-2015,13:00,ABO,ALBERT OLDENDORFF ,N001 ,ASTABUMI CIPTA ,DMG,DIRTY, 2400, 20000, 5000,FOOD , - - , - - ,10-11 ,
2,1545052 ,EOLU 1234567,IM04,21-11-2015,10:00,202,WAN HAI 202 ,N 001 ,ANUGERAH AGUNG LUMIN,AVL,DIRTY, 2400, 20000, 1000,MAKANAN , - - , - - ,11-13 , ,APL
$this->load->library('csvreader');
$data = array('halaman' => 'Data Container',
'csvData' => $this->csvreader->parse_file(base_url('assets/csv/ZIL.csv')));
$main_view = $this->load->view('surveyor/v_container', $data, TRUE);
echo $main_view;
这是图书馆:
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Csvreader {
var $fields; /** columns names retrieved after parsing */
var $separator = ';'; /** separator used to explode each line */
var $enclosure = '"'; /** enclosure used to decorate each field */
var $max_row_size = 4096; /** maximum row size to be used for decoding */
function parse_file($p_Filepath) {
$file = fopen($p_Filepath, 'r');
$this->fields = fgetcsv($file, $this->max_row_size, $this->separator, $this->enclosure);
$keys_values = explode(',',$this->fields[0]);
$content = array();
$keys = $this->escape_string($keys_values);
$i = 1;
while( ($row = fgetcsv($file, $this->max_row_size, $this->separator, $this->enclosure)) != false ) {
if( $row != null ) { // skip empty lines
$values = explode(',',$row[0]);
if(count($keys) == count($values)){
$arr = array();
$new_values = array();
$new_values = $this->escape_string($values);
for($j=0;$j<count($keys);$j++){
if($keys[$j] != ""){
$arr[$keys[$j]] = $new_values[$j];
}
}
$content[$i]= $arr;
$i++;
}
}
}
fclose($file);
return $content;
}
function escape_string($data){
$result = array();
foreach($data as $row){
$result[] = str_replace('"', '',$row);
}
return $result;
}
}
?>
但是,当我在视图中调试它时:
print\r($csvData)
,它只会给我这样的空数组:array()
,基于库,任何它非常感谢的帮助。要获取csv文件数据,请尝试以下方法--
现在可以这样打印数组了--
echo”“;
打印(行);
请尝试此方法。要获取csv文件数据,请尝试此方法-- 现在可以这样打印数组了--
echo”“;
打印(行);
请尝试这种方式。您的CSV数据没有您在库中指定的存储模块。@Ahmad,如何使其成为存储模块?任何解决方案,因为csv是由旧应用程序“CLIPPER”生成的,只需尝试将存储模块更改为空字符串(这应该可以在控制器中访问),例如:
$This->csvreader->enclosure=''代码>@Ahmad,仍然不起作用。我已经在我的机器上测试了你的示例,它可以工作,所以你的代码中没有任何错误。除非您的CSV文件与您在本问题中发布的文件不一样。您的CSV数据没有您在库中指定的存储模块。@Ahmad,如何使其成为存储模块?任何解决方案,因为csv是由旧应用程序“CLIPPER”生成的,只需尝试将存储模块更改为空字符串(这应该可以在控制器中访问),例如:$This->csvreader->enclosure=''代码>@Ahmad,仍然不起作用。我已经在我的机器上测试了你的示例,它可以工作,所以你的代码中没有任何错误。除非您的CSV文件与您在本问题中发布的文件不一样。