如何从没有预期 CSV 列的 csv 文件中获取值 headers
How to get values from a csv file without expected CSV column headers
用户准备要上传的 CSV 文件。唯一强制和预期的 CSV 列 headers 是 title
和 description
。
但是,用户可以选择其他个人 CSV 列 headers。也就是说,除了 title
和 description
这两个强制性的之外,用户还可以选择包含另一个 remarks
time
e.t.c.
我想在所有这些其他列中一起获取额外数据(如果它们存在)并在一个数据库字段中保存为一个数组 data
。
但是,我想不出一种方法来获取额外的字段数据。见下文
if($request->hasFile('import_file')){
$path = $request->file('import_file')->getRealPath();
$data = Excel::load($path, function($reader) {})->get();
if(!empty($data) && $data->count()){
foreach ($data->toArray() as $key => $value) {
if(!empty($value)){
foreach ($value as $v) {
$insert[] = ['title' => $v['title'], 'description' => $v['description'], ['data' => $v['xxxxxxxxxxxx'], ];
}
}
}
if(!empty($insert)){
Item::insert($insert);
return back()->with('success','Insert Record successfully.');
}
}
}
return back()->with('error','Please Check your file, Something is wrong there.');
如何获取可选的额外数据并将其保存?
有人吗?
您可以将其存储在 JSON...
foreach ($value as $v) {
$data = json_encode($v);
$insert[] = ['title' => $v['title'], 'description' => $v['description'], 'data' => $data ];
}
这包括标题和描述,您可以创建一个没有该数据的新数组,然后根据需要存储它。
我认为您的要求是从数组中取出所有列,除了标题和描述以及 merge/jsonify 它们并将其存储。如果这是你想要的
$insert = []; //just to be safe declare $insert here
foreach ($data->toArray() as $key => $value) {
if(!empty($value)){
foreach ($value as $v) {
$insert[] = [
'title' => $v['title'],
'description' => $v['description'],
'data' => array_except($v,['title', 'description']),//maybe you want to jsonify or merge data
];
}
}
}
//DB insertion logic
您可以阅读 array_except()
辅助函数 here
用户准备要上传的 CSV 文件。唯一强制和预期的 CSV 列 headers 是 title
和 description
。
但是,用户可以选择其他个人 CSV 列 headers。也就是说,除了 title
和 description
这两个强制性的之外,用户还可以选择包含另一个 remarks
time
e.t.c.
我想在所有这些其他列中一起获取额外数据(如果它们存在)并在一个数据库字段中保存为一个数组 data
。
但是,我想不出一种方法来获取额外的字段数据。见下文
if($request->hasFile('import_file')){
$path = $request->file('import_file')->getRealPath();
$data = Excel::load($path, function($reader) {})->get();
if(!empty($data) && $data->count()){
foreach ($data->toArray() as $key => $value) {
if(!empty($value)){
foreach ($value as $v) {
$insert[] = ['title' => $v['title'], 'description' => $v['description'], ['data' => $v['xxxxxxxxxxxx'], ];
}
}
}
if(!empty($insert)){
Item::insert($insert);
return back()->with('success','Insert Record successfully.');
}
}
}
return back()->with('error','Please Check your file, Something is wrong there.');
如何获取可选的额外数据并将其保存?
有人吗?
您可以将其存储在 JSON...
foreach ($value as $v) {
$data = json_encode($v);
$insert[] = ['title' => $v['title'], 'description' => $v['description'], 'data' => $data ];
}
这包括标题和描述,您可以创建一个没有该数据的新数组,然后根据需要存储它。
我认为您的要求是从数组中取出所有列,除了标题和描述以及 merge/jsonify 它们并将其存储。如果这是你想要的
$insert = []; //just to be safe declare $insert here
foreach ($data->toArray() as $key => $value) {
if(!empty($value)){
foreach ($value as $v) {
$insert[] = [
'title' => $v['title'],
'description' => $v['description'],
'data' => array_except($v,['title', 'description']),//maybe you want to jsonify or merge data
];
}
}
}
//DB insertion logic
您可以阅读 array_except()
辅助函数 here