【问题标题】:Skip the first line of a CSV file in Yii2在 Yii2 中跳过 CSV 文件的第一行
【发布时间】: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,姓名,通行证,信息 等等,

所以我想跳过粗体内容并继续执行。

【问题讨论】:

    标签: csv phpmyadmin yii2 yii-extensions


    【解决方案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
    猜你喜欢
    • 1970-01-01
    • 2020-12-15
    • 2015-09-18
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    • 2021-11-11
    • 2014-01-26
    相关资源
    最近更新 更多