php根据字段相识度进行排序查询
$data = [
[
'id'=>1,
'title'=>'test内容管理系统',
],
[
'id'=>2,
'title'=>'开源test',
],
[
'id'=>3,
'title'=>'test轻量级开源内容管理系统',
],
[
'id'=>4,
'title'=>'内容管理系统',
],
[
'id'=>5,
'title'=>'免费内容管理系统',
],
[
'id'=>6,
'title'=>'TEST',
],
[
'id'=>7,
'title'=>'免费test',
],
[
'id'=>8,
'title'=>'轻量级开源test',
],
[
'id'=>9,
'title'=>'tesT建站CMS',
],
[
'id'=>10,
'title'=>'免费开源test',
],
];
上面是原数据。现在接到需求,需要搜索时,匹配的相识度越高,排在越前面。
function similar_arr($array, $keyword, $arr_key = 'title'){
//数组key小于3,直接返回,不符合排序要求(特例,可不写)
//if(count($array)<= 3){
// return $array;
//}
//数组相似度处理
foreach ($array as $key => $value) {
similar_text($value[$arr_key], $keyword, $percent);
$value['percent'] = $percent;
$data[] = $value;
}
//取出数组中percent的一列,返回一维数组
$percent = array_column($data, 'percent');
//排序,根据 percent 排序
array_multisort($percent, SORT_DESC, $data);
return $data;
}
$res = similar_arr($data, 'YzmCMS');
var_dump($res);
得到想要的结果:
Array
(
[0] => Array
(
[work_id] => 156075645309713479
[work_name] => test
[open_id] => DalI5=382UyRck37Nomk
[face_pic] => http://zk-new-designer.oss-cn-beijing.aliyuncs.com/a267a2889910dc5713d5b2fe35d68139.png
[classify_1] => 1
[classify_2] => 3
[classify_3] => 18
[view_num] => 0
[comment_num] => 0
[like_num] => 0
[is_recommend] => 1
[step] => 0
[status] => 2
[create_time] => 2019-06-17 15:28:34
[is_del] => 0
[recommend_level] => A
[recommend_level_val] => 3
[classify_1_name] => 原创
[classify_2_name] => 平面
[classify_3_name] => 品牌
[user_info] => Array
(
[open_id] => DalI5=382UyRck37Nomk
[username] => KALI落落
[sex] => 1
[vocation] => 学生
[avatar] => http://res.shiquaner.zookingsoft.com/08308f0ea288b09507b06e9d0d69221e.png
[country] => 中国
[province] => 广东省
[city] => 惠州市
[personal_sign] => 路漫漫其修远兮
[work_num] => 34
[fans_num] => 16
[follow_num] => 15
[create_time] => 2019-05-08 15:25:11
[recommend_level_val] => 3
[email] => 450049593@qq.com
[situation] => 我是工作室/公司负责人
[work_experience] => 10-40小时
[design_experience] => 4年
[preference_classify] => 插图
[style] => 极简,扁平,风景
[field] => 日化用品,医疗,传媒,快消
[is_completed] => 1
[follow_flag] => 0
[report_num] => 0
[popular_num] => 1752
)
)
[1] => Array
(
[work_id] => 157691016902
[work_name] => TEST
[open_id] => 155425957361222343
[face_pic] => http://res.shiquaner.zookingsoft.com/0fdccdc672c436b38b747f9444d261b7.png
[classify_1] => 1
[classify_2] => 3
[classify_3] => 18
[view_num] => 20
[comment_num] => 0
[like_num] => 0
[is_recommend] => 1
[step] => 1
[status] => 2
[create_time] => 2019-12-21 14:36:39
[is_del] => 0
[recommend_level] => S
[recommend_level_val] => 4
[classify_1_name] => 原创
[classify_2_name] => 平面
[classify_3_name] => 品牌
[user_info] => Array
(
[open_id] => 155425957361222343
[username] => TEST.JD
[sex] => 2
[vocation] => 插画师
[avatar] => http://zk-web-object.oss-cn-qingdao.aliyuncs.com/df54eab7631346a7208b54a65fb1918b.png
[country] => 中国
[province] => 广东省
[city] => 深圳市
[personal_sign] =>
[work_num] => 6
[fans_num] => 7
[follow_num] => 11
[create_time] => 2019-04-03 10:46:13
[recommend_level_val] => 4
[email] =>
[flag] => 2
[is_completed] => 0
[follow_flag] => 0
[report_num] => 0
[popular_num] => 233
)
)
[2] => Array
(
[work_id] => 156075769955593473
[work_name] => test
[open_id] => DalI5=382UyRck37Nomk
[face_pic] => http://zk-new-designer.oss-cn-beijing.aliyuncs.com/0aaf107848e3284497b73c85e28cbb94.png
[classify_1] => 1
[classify_2] => 3
[classify_3] => 19
[view_num] => 1
[comment_num] => 0
[like_num] => 0
[is_recommend] => 0
[step] => 0
[status] => 2
[create_time] => 2019-06-17 15:49:09
[is_del] => 0
[recommend_level] =>
[recommend_level_val] => 0
[classify_1_name] => 原创
[classify_2_name] => 平面
[classify_3_name] => 标志
[user_info] => Array
(
[open_id] => DalI5=382UyRck37Nomk
[username] => KALI落落
[sex] => 1
[vocation] => 学生
[avatar] => http://res.shiquaner.zookingsoft.com/08308f0ea288b09507b06e9d0d69221e.png
[country] => 中国
[province] => 广东省
[city] => 惠州市
[personal_sign] => 路漫漫其修远兮
[work_num] => 34
[fans_num] => 16
[follow_num] => 15
[create_time] => 2019-05-08 15:25:11
[recommend_level_val] => 3
[email] => 450049593@qq.com
[situation] => 我是工作室/公司负责人
[work_experience] => 10-40小时
[design_experience] => 4年
[preference_classify] => 插图
[style] => 极简,扁平,风景
[field] => 日化用品,医疗,传媒,快消
[is_completed] => 1
[follow_flag] => 0
[report_num] => 0
[popular_num] => 1752
)
)
)

php根据字段相识度进行排序查询的更多相关文章
- rownum按某字段排序查询
特点:rownum伪列,查询结果按顺序从1递增排列 用途:按某字段排序查询第几名到第几名的数据 但加上按字段排序条件后,rownum并不会从1递增 需把按字段排序查询的数据作为一张表,再次查询,row ...
- 10. MySQL基础-02条件查询、排序查询
2. 条件查询 语法 select 查询列表 from 表名 where 筛选条件: 分类 按条件表达式筛选 简单的条件运算符:> < = != <> >= ⇐ 按逻 ...
- MySQL的ALTER变更、正则查询、分组查询、排序查询以及事务查询的概
MySQL的表和字段信息的变更 ALTER TABLE table-name DROP column-name; #删除某个字段 ALTER TABLE table-name ADD column-n ...
- 03_MySQL DQL_排序查询
#进阶3:排序查询/*语法: select 查询列表 from 表名 [where 筛选条件] order by 排序列表 [asc|desc] 特点: 1.asc升序,desc降序, 如果都不写,默 ...
- MySql——创建数据表,查询数据,排序查询数据
参考资料:<Mysql必知必会> 创建数据表 在学习前首先创建数据表和插入数据.如何安装mysql可以看看上个博客https://www.cnblogs.com/lbhym/p/11675 ...
- MySQL 进阶3 排序查询
#进阶3 排序查询 格式: select 查询列名 from 表 [where 筛选条件] order by 排序列名 [asc / desc] 排序查询/嵌套排序查询/函数查询/[按别名进行 排序] ...
- MySQL 按照数据库表字段动态排序 查询列表信息
MySQL 按照数据库表字段动态排序 查询列表信息 背景描述 项目中数据列表分页展示的时候,前端使用的Table组件,每列自带对当前页的数据进行升序或者降序的排序. 但是客户期望:随机点击某一列的时候 ...
- SEC7 - MySQL 查询语句--------------进阶3:排序查询
# 进阶3:排序查询 /* 引入: select * from employees; 语法: select 查询列表 from 表 [where 筛选条件] order by 排序的列表 asc/de ...
- 数据库MySQL--条件查询/排序查询
一.条件查询 条件查询:满足条件的字段被筛选出来 语法:select 查询列表字段 from 表名 where 筛选条件: 条件查询的条件分类: 1.按条件表达式筛选:条件运算符:>, < ...
随机推荐
- 工具之wc
wc命令的功能为统计指定文件中的字节数.字数.行数, 并将统计结果显示输出. 语法:wc [选项] 文件… 说明:该命令统计给定文件中的字节数.字数.行数.如果没有给出文件名,则从标准输入读取.wc同 ...
- Open Images V4 下载自己需要的类别
OpenImages V4数据集描述1)这个v4数据集主要有两种用途:对象检测及分类,意思是说可以用这个数据集训练出对象检测模型,用于识别图像中的对象类别及位置边框.视觉关系检测,比如你用这个v4数据 ...
- 计蒜客A1998 Ka Chang (分块+dfs序+树状数组)
题意 给你一个\(1e5\)的有点权的树,有\(1e5\)个操作: 1.给第\(x\)层的点加上\(y\) 2.求以\(x\)为根的子树的点权和 思路 首先处理出层数为x的所有点 操作2一般都是用df ...
- 关于求最长子串,使得最大减最小小于k的问题-以POJ4003为例
问题 给出一个长度为\(n\)的序列\(a[i]\),有\(m\)次询问, 每次给你一个\(k\),让你求一个最长子串\([l,r]\),使得\(max_l^r\{a_i\}-min_l^r\{a_i ...
- 事务特性ACID及隔离级别
注:例子引用来自:https://www.cnblogs.com/WJ-163/p/6023054.html 事务就是一组原子性的SQL查询,或者说一个独立的工作单元. 银行应用是解释事务必要性的一个 ...
- 从linux命令行分享文件:bashupload.com和transfer.sh
背景 传输文件是一个常见的需求,简单的做法是通过即时通讯工具,邮件,网盘完成. 但当分享或接收的一端为远程服务器,只有命令行可以操作时,一个能支持在命令行完成分享和下载的工具,就会省下不少麻烦. 下面 ...
- MongoDB入门(介绍、安装)
一.什么是MongoDB? MongoDB is a document database with the scalability and flexibility that you want with ...
- k8s Pipline CI/CD
一.Pipeline介绍 pipeline是一套jenkins官方提供的插件,它可以用来在jenkins中实现和集成连续交付 用户可以利用Pipeline的许多功能: 代码:pipeline在代码中实 ...
- [CentOS7]安装ODBC Driver 17 for SQL Server
Python 通过pyodbc 连接SQL Server 数据库驱动 安装环境 cat /etc/redhat-release CentOS Linux release (Core) 微软官网 htt ...
- React之虚拟DOM中的Diff算法
一.React中的setState ( 异步函数,异步获取数据 ) 若操作的时间间隔短,它可以将多个setState结合成一个setState,减少虚拟DOM的比对次数,提高性能 二.同层虚拟DOM对 ...