如何更改此 CSV 库导入代码点火器中的键/第一行


How to change the keys/first row in this CSV library import Codeigniter

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;
    }   
}

这是用于将csv文件导入sql的库的代码,键在第一行。我想删除csv文件中的第一行键并将其添加到此代码中。

我想在代码中已经存在的 csv 第一行中的字段:

$fields = array(        '0'     => 'model',
                        '1'     => 'serial_num' ,
                        '2'     => 'client_name',
                        '3'     => 'end_user',
                        '4'     => 'trends_warranty_start',
                        '5'     => 'trends_warranty_end',
                        '6'     => 'trends_warranty_period',
                        '7'     => 'client_contract_no',
                        '8'     => 'vendor',
                        '9'     => 'support_coverage',
                        '10'    => 'sla',
                        '11'    => 'service_contract_num',
                        '12'    => 'support_coverage_start',
                        '13'    => 'support_coverage_end',
                        '14'    => 'support_coverage_period',
                        '15'    => 'trends_po',
                        '16'    => 'supplier_so'); 
无需

更改代码,只需将这些列添加到 csv 文件的第一行即可。并且将在代码中可用。

"serial_num" ,"client_name","end_user","trends_warranty_start","trends_warranty_end","trends_warranty_period","client_contract_no","vendor","support_coverage","sla","service_contract_num","support_coverage_start","support_coverage_end","support_coverage_period","trends_po","supplier_so"

另一种可能性是,当您获得 csv 结果时,在结果数组中添加列名,如下所示

$result =   $this->csvreader->parse_file('Test.csv');
$columns    =    array(
                    'model',
                    'serial_num' ,
                    'client_name',
                    'end_user',
                    'trends_warranty_start',
                    'trends_warranty_end',
                    'trends_warranty_period',
                    'client_contract_no',
                    'vendor',
                    'support_coverage',
                    'sla',
                    'service_contract_num',
                    'support_coverage_start',
                    'support_coverage_end',
                    'support_coverage_period',
                    'trends_po',
                    'supplier_so'
);
$resultWithColumns  =   array_unshift($result , $columns);

现在,结果数组中有了列名。