个人技术博客
作业基本信息
这个作业属于哪个课程 | 2021春软件工程实践S班(福州大学) |
---|---|
这个作业要求在哪里 | 软件工程实践总结&个人技术博客 |
这个作业的目标 | 对软件工程实践总结,完成个人技术博客 |
其他参考文献 | 《构建之法》 |
PHP操作数据库
概述
1.通过php遍历存放论文json文件的文件夹,解析json文件数据
2.对jsonString进行处理,使关键字去掉双引号和大括号,以分号分隔
3.对发布日期进行处理,因为原本的Date数据被转化为jsonString后月份为英文,无法在转成Date,因此通过月份数字转化存入字符串中
4.将处理好数据存入数据表
5.链接数据库,获得前端传输的搜索内容,运用MySQL语句对论文表所有数据模糊搜索(统计操作:设置关键词表字段num初值为1,对关键词表的关键词字段重复出现次数进行count(*)统计,次数设置为total,以关键词group,以total排序,limit 10.)
6.获得符合条件的数据,将其传到前端
关键代码截图
通过php遍历存放论文json文件的文件夹,解析json文件数据
$dir = "ECCV/";
if (is_dir($dir)){
if ($dh = opendir($dir)){
while (($file = readdir($dh)) !== false){
if($file!='.'&& $file!='..'){
$path="ECCV/".$file;
$json_string = file_get_contents($path);
$data = json_decode($json_string, true);// 用参数true把JSON字符串强制转成PHP数组
$datas = array();//保存处理好的信息
$i=0;
foreach($data as $list=>$things)
对jsonString进行处理,对被转化为array的关键字进行处理去掉双引号和大括号,以分号分隔
if(is_array($things)){
$str='';
foreach ($things as $key => $value)
{
$str .=$value.';';
}
$datas[$i]=$str;
}
对发布日期进行处理,因为原本的Date数据被转化为jsonString后月份为英文,无法在转成Date,因此通过月份数字转化存入字符串中
$find = array("January","February","March","April","May","June","July","August","September","October","November","December" );
$rep = array("01","02","03","04","05","06","07","08","09","10","11","12");
$number=str_ireplace($find, $rep, $things);
$day=substr($number,0,2);//取得年份
$month=substr($number,3,2);//取得月份
$year=substr($number,6,4);//取得几号
$number = $year.'-'.$month.'-'.$day;
$datas[$i]=$number;
设置关键词表字段num初值为1,对关键词表的关键词字段重复出现次数进行count(*)统计,次数设置为total,以关键词group,以total排序,limit 10.
$mysqli->query("select keyword,sum(num) as total from keyword group by keyword order by total DESC limit 10");
遇到困难
在学习PHP遍历解析json文件之前,尝试了许多办法来批量解析json文件,但下载的软件解析文件数量有限,后面终于决定尝试使用PHP来实现,而本来以为很困难的方法,在百度搜索都没有明确解决方法之后,根据类似的代码总结出了正确的方法,虽然过程很痛苦,但是通过自己努力自己解决困难的成就感还是很好的。
总结
在一学期的漫长学习实践中,学习到的知识和经验是宝贵值得珍惜的,既有遇到困难无法解决的着急和挫败,也有通过努力克服困难的喜悦,更重要的是感觉到自己正在一点点进步,对未来的方向也更清晰。同时,在实践中不断巩固自己所学的知识,将遇到的问题转化为新的知识吸收,为之后的工作积累经验。