[英]How to fetch data from a CSV file in PHP with different number of rows and columns?
我正在創建一個 WordPress 自定義插件,通過上傳 CSV 文件將產品數據導入 Woocommerce 中。 CSV 文件包含具有自定義屬性和大量數據的不同類型的產品(簡單、可變、分組、外部)。 您可以查看CSV 文件。 這是我的代碼:
<?PHP
foreach($csv_file as $csv_data){
//getting csv file name
$csvFileName = $csv_data["name"];
$file = fopen($csvFileName, 'r');
$file_data = fgetcsv($file);
$fp = file($csvFileName);
$rows = array_map('str_getcsv', file($csvFileName));
$header = array_shift($rows);
$csv = array();
foreach($rows as $row) {
$csv[] = array_combine($header, $row);
}
$assocData = array();
if( ($handle = fopen( $csvFileName, "r")) !== FALSE) {
$rowCounter = 0;
while (($rowData = fgetcsv($handle, 0, ",")) !== FALSE) {
if( 0 === $rowCounter) {
$headerRecord = $rowData;
} else {
foreach( $rowData as $key => $value) {
$assocData[ $rowCounter - 1][ $headerRecord[ $key] ] = $value;
}
}
$rowCounter++;
}
fclose($handle);
}
//Then iterate $assocData using foreach loop and fetch all keys and values
?>
注意:上述代碼非常適用於簡單的產品類型,但在提供上述鏈接的 CSV 文件時會引發錯誤。 這是錯誤截圖:
我的目標:我想上傳一個 CSV 文件,其中包含混合產品類型的數據,如 100 個簡單產品、50 個可變產品、20 個外部產品和 10 個分組產品,然后上傳 Woocommerce 中的所有產品。
PHP 的 ParseCSV 為我工作。 If someone gets into the same situation, they can use this PHP class: https://github.com/parsecsv/parsecsv-for-php It returns CSV file data properly.
在 PHP 中打開 CSV 文件並獲取文件名后,我從代碼中添加此 PHP:
<?PHP
$csv = new \ParseCsv\Csv();
$csv->auto($csvFileName);
$csv_file_data = $csv->data;
?>
然后,我只需要使用 foreach 循環迭代$csv_file_data
變量。
特別感謝@Deigo 提到 PHP class。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.