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);
现在,结果数组中有了列名。