Đây là chức năng mà tôi thêm vào thư viện tiện ích của tôi để sử dụng trong tương lai. Tôi lấy nó từ NSSec's answer.
Giải pháp này cho phép bạn chỉ định xem bạn có muốn sử dụng dòng đầu tiên làm khóa cho mảng hay không. Tôi có lẽ sẽ thêm khả năng để vượt qua một mảng được sử dụng cho các phím cho tham số $ first_line_keys tại một số điểm.
/**
* Converts a CSV file into an array
* NOTE: file does NOT have to have .csv extension
*
* $file - path to file to convert (string)
* $delimiter - field delimiter (string)
* $first_line_keys - use first line as array keys (bool)
* $line_lenght - set length to retrieve for each line (int)
*/
public static function CSVToArray($file, $delimiter = ',', $first_line_keys = true, $line_length = 2048){
// file doesn't exist
if(!file_exists($file)){
return false;
}
// open file
$fp = fopen($file, 'r');
// add each line to array
$csv_array = array();
while(!feof($fp)){
// get current line
$line = fgets($fp, $line_length);
// line to array
$data = str_getcsv($line, $delimiter);
// keys/data count mismatch
if(isset($keys) && count($keys) != count($data)){
// skip to next line
continue;
// first line, first line should be keys
}else if($first_line_keys && !isset($keys)){
// use line data for keys
$keys = $data;
// first line used as keys
}else if($first_line_keys){
// add as associative array
$csv_array[] = array_combine($keys, $data);
// first line NOT used for keys
}else{
// add as numeric array
$csv_array[] = $data;
}
}
// close file
fclose($fp);
// nothing found
if(!$csv_array){
return array();
}
// return csv array
return $csv_array;
} // CSVToArray()
Nguồn
2016-09-28 23:40:54
Tôi đã đến giải pháp tương tự. Tôi đọc tệp và tìm kiếm tab trong đó; nếu không tìm thấy tôi giả định rằng dấu phân cách là dấu phẩy. Sau đó dùng getcv làm phiên bản php là 5.2. Mặc dù tôi thấy một số sai sót trong điều này, tôi không thể nghĩ ra bất cứ điều gì tốt hơn. – veli
Có thể đếm các tab và dấu phẩy (và các dấu phân cách tiềm năng khác) trên dòng đầu tiên, sau đó so sánh chúng với dòng thứ hai và cứ như vậy. Cho dù nhất quán nhất là dấu phân cách có khả năng của bạn. Một giải pháp vượt qua hai, thật không may, nhưng đó thường là cách khi bạn có một ẩn số. – Rikki