场景

遇到了一个说难不能说简单不简单的问题,那就是从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 直接替换成传入函数就可以了
直接放图吧:

调用

函数

如果觉得我的文章对你有用,可以赞助本站,使本站更好的发展