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.按条件表达式筛选:条件运算符:>, < ...
随机推荐
- mysql--->mysql查看数据库操作记录
mysql查看数据库操作记录 MySQL的查询日志记录了所有MySQL数据库请求的信息.无论这些请求是否得到了正确的执行.默认文件名为hostname.log.默认情况下MySQL查询日志是关闭的.生 ...
- 本地Linux虚拟机内网穿透,服务器文件下载到本地磁盘
本地Linux虚拟内网穿透 把服务器文件下载到本地磁盘 https://natapp.cn/ 1.注册账户点击免费隧道
- Docker基础内容之镜像构建
前言 Docker可以通过读取Dockerfile中的指令来自动构建图像.Dockerfile是一个文本文档,包含用户可以在命令行上调用的所有命令来组装一个图像.使用docker构建用户可以创建一个自 ...
- yield 伪并发例子
import timedef custumer(name): print('%s 准备吃饺子了'%name) while True: curry = yield print('饺子%s来了 ,被%s吃 ...
- artTemplate--模板使用自定义函数(1)
案例 因为公司业务需要频繁调用接口,后端返回的都是json树对象,需要有些特殊的方法做大量判断和数据处理,显然目前简单语法已经不能满足业务需要了,需要自己定制一些 方法来处理业务逻辑. 例如后台返回的 ...
- 【论文笔记系列】AutoML:A Survey of State-of-the-art (上)
之前已经发过一篇文章来介绍我写的AutoML综述,最近把文章内容做了更新,所以这篇稍微细致地介绍一下.由于篇幅有限,下面介绍的方法中涉及到的细节感兴趣的可以移步到论文中查看. 论文地址:https:/ ...
- 《快乐编程大本营》java语言训练班-第4课:java流程控制
<快乐编程大本营>java语言训练班-第4课:java流程控制 第1节. 顺序执行语句 第2节. 条件分支语句:if条件语句 第3节. 条件分支语句:switch 条件语句 第4节. 条件 ...
- WTL Picture Control显示图片
1.在对话框上新建一个Picture Control ID为:IDC_STATIC_IMG 2.添加图片资源ID:IDB_BITMAP1(选中Bitmap点击导入,选择bmp图片资源) 实现: CWi ...
- 【Pycharm使用者必看】自定义【光标快速定位到行尾】的按键
1.问题描述 使用Pycharm写代码时,有很多比较方便的快捷键,比如:Shift+Enter快速切换到下一行, 但每次切换到多个括号外或者想移动到行尾,就必须按 End 键或者鼠标点击, 这样操作幅 ...
- Go语言项目中使用zap日志库(翻译)
本文先介绍了Go语言原生的日志库的使用,然后详细介绍了非常流行的Uber开源的zap日志库,同时介绍了如何搭配Lumberjack实现日志的切割和归档. 在Go语言项目中使用Uber-go的Zap L ...