场景
遇到了一个说难不能说简单不简单的问题,那就是从excel导入到数据
数据格式的变换
我的数据格式:
$v['A'] = "1";
$v['B'] = "2";
$v['C'] = "3";
$v['D'] = "4";
希望得到的结果
[{"option":"A","value":"1"},{"option":"B","value":"2"},{"option":"C","value":"3"},{"option":"D","value":"4"}]
解决:
$v['options'] = [];
for($i=0;$i<4;$i++){
$v['options'][$i]['option'] = chr(65+$i);
$v['options'][$i]['value'] = $v[$v['options'][$i]['option']];
unset($v[$v['options'][$i]['option']]);
}
chr就是得到传入值ASCII的字符并返回出来,刚好就对应了ABCD
高级函数
高级函数其实我也并不常用,大概就是你把一个函数作为一个参数传入,在函数中可以调用你传入的函数。
在导入excel时我直接写了个辅助函数,发现并不能实现全部的导入工作,只能得到数据再自行去处理
// 使用 PHPSpreadsheet 读取 Excel 文件$spreadsheet = IOFactory::load($filePath);
$worksheet = $spreadsheet->getActiveSheet();
$data = $worksheet->toArray();
/*去掉项表头*/
unset($data[0]);
$data = array_values($data);
// 清理并准备数据
foreach ($data as $row) {
###处理逻辑
}
这里把foreach
直接替换成传入函数就可以了
直接放图吧:
1 条评论
你好