赞
踩
今天在用 phpexcel 将数据xlxs数据导入到数据库发现一直报错
Array and string offset access syntax with curly braces is no longer supported
百度下发现PHP7.4后面版本,不再能够使用花括号来访问数组或者字符串的偏移,而我当前php版本是8.1 没办法根据他这个报错 一步一步找到对应的文件将{} 修改成[] 就可以了
下面列出其中两个地方。具体还有很多地方,需要自己一步一步修改:
最后附上我导入数据代码
$file = File::where(['status' => 0])->first(); if (empty($file)) { exit("没有信息采集!"); } $file_path = storage_path('app/public/' . $file->path);; $objPHPExcel = \PHPExcel_IOFactory::load($file_path); $worksheet = $objPHPExcel->getActiveSheet(); $startRow = 2; // 从第2行开始读取数据 $endRow = $worksheet->getHighestRow(); $endCol = $worksheet->getHighestColumn(); for ($row = $startRow; $row <= $endRow; $row++) { $rowData = $worksheet->rangeToArray('A' . $row . ':' . $endCol . $row, NULL, TRUE, FALSE); if (!empty(Redis::get($rowData[0][0] . '_' . $rowData[0][1]. '_' . $rowData[0][2]. '_' . $rowData[0][3]))) { continue; } $temp = [ 'title' => $rowData[0][0] ?? '', 'role_name' => $rowData[0][1] ?? '', 'content' => $rowData[0][2] ?? '', 'mobile' => $rowData[0][3] ?? '', 'province' => $rowData[0][4] ?? '', 'city' => $rowData[0][5] ?? '', 'created_at' => date('Y-m-d H:i:s'), 'updated_at' => date('Y-m-d H:i:s'), ]; Redis::set(Redis::get($rowData[0][0] . '_' . $rowData[0][1]. '_' . $rowData[0][2]. '_' . $rowData[0][3]), 1); $inset_data[] = $temp; } if (!empty($inset_data)) { Info::insert($inset_data); } $file->status = 1; $file->save(); exit("导入完成!");
我修改的包链接在此,compoer phpexecl包到本地之后,直接下载我的包覆盖即可,则不会报错Array and string offset access syntax with curly braces is no longer supported in ***
https://download.csdn.net/download/zhanglili1993/89105629
希望能帮到你
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。