在 Yii2 中跳过 CSV 文件的第一行
Posted
技术标签:
【中文标题】在 Yii2 中跳过 CSV 文件的第一行【英文标题】:Skip the first line of a CSV file in Yii2 【发布时间】:2018-06-12 00:27:12 【问题描述】:公共函数 actionUpload() $model = new CsvForm();
if($model->load(Yii::$app->request->post()))
$file = UploadedFile::getInstance($model,'file');
$filename = 'Data.'.$file->extension;
$upload = $file->saveAs('uploads/'.$filename);
if($upload)
define('CSV_PATH','uploads/');
$csv_file = CSV_PATH . $filename;
$filecsv = file($csv_file);
print_r($filecsv);
foreach($filecsv as $data)
$modelnew = new Customer1();
$hasil = explode(",",$data);
$nim = $hasil[0];
$nama = $hasil[1];
$jurusan = $hasil[2];
$angkatan = $hasil[3];
$modelnew->username = $nim;
$modelnew->firstname = $nama;
$modelnew->lastname = $jurusan;
$modelnew->password = $angkatan;
$modelnew->save();
unlink('uploads/'.$filename);
return $this->redirect(['site/index']);
else
return $this->render('upload',['model'=>$model]);
这是我的 CSV 数据
user1,name,pass,info 用户 2,姓名,通行证,信息 等等,
所以我想跳过粗体内容并继续执行。
【问题讨论】:
【参考方案1】:你可以移动数组
$filecsvtemp = file($csv_file);
$filecsv = array_shift($filecsvtemp );
这样,数组的第一行就不会出现在结果数组中
否则使用计数器
$cnt = 0;
$filecsv = file($csv_file);
print_r($filecsv);
foreach($filecsv as $data)
if ($cnt!=0)
$modelnew = new Customer1();
$hasil = explode(",",$data);
$nim = $hasil[0];
$nama = $hasil[1];
$jurusan = $hasil[2];
$angkatan = $hasil[3];
$modelnew->username = $nim;
$modelnew->firstname = $nama;
$modelnew->lastname = $jurusan;
$modelnew->password = $angkatan;
$modelnew->save();
$cnt++;
【讨论】:
添加这两行后我得到了错误 -** Invalid argument provided for foreach()** 以上代码工作正常。你拯救了我的一天。 @scaisEdge以上是关于在 Yii2 中跳过 CSV 文件的第一行的主要内容,如果未能解决你的问题,请参考以下文章
Python 3.2 在 csv.DictReader 中跳过一行