如何在PHP的二维数组中进行模糊搜索?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在PHP的二维数组中进行模糊搜索?相关的知识,希望对你有一定的参考价值。

参考技术A mysql支持自然语言的全文搜索
对于字段的要求:
只能是CHAR, VARCHAR, 或 TEXT 类型的字段
表类型是MyISAM
在表建好,并导入数据后,建立一个fulltext index(索引)
用法:
select 字段1,字段2,字段3, MATCH(要匹配的字段名) AGAINST('keyword') as score from table having score>0
命中的每一行都会有个分数,分数越大表示结果越接近keyword,分数越低的就是越模糊的结果追问

不用数据库怎么实现?

php在二维数组中搜索[重复]

【中文标题】php在二维数组中搜索[重复]【英文标题】:php search in two dimensional array [duplicate] 【发布时间】:2018-01-16 22:20:17 【问题描述】:

我开发了一个程序来获取包含 user_id 和他们的技能的用户技能数组,这个数组是这样的:

array(4) 
   [17]=>
     array(3) 
        [0]=>
          string(8) "word"
        [1]=>
          string(10) "power point"
        [2]=>
          string(28) "excel"
       
   [16]=>
    array(3) 
    [0]=>
     string(14) "english
    [1]=>
     string(14) "french"
    [2]=>
    string(12) "farsi"
  
 

键是 user_id,值是技能数组,现在我想搜索具有两个值的 user_id:english 或 word,我希望返回 17、16,我该怎么做? ,谢谢你的帮助:)

【问题讨论】:

我看到了那个问题,我认为在数组中搜索 id,我只是搜索多值,我可以再做一次吗? 用户 id 16 和 17 没有您想要的两个值(英语、单词)!它们在每个 id 中只有一个值 *** 不是教程网站,也不是搜索引擎替代品。我们可以提供帮助,但首先是您的工作。先Put some efforts,然后用明确的解释询问,如果适用,MCV example。 @ShahinA.M,将您的描述更改为 以搜索具有两个值的 user_ids :english OR word 我知道 *** 是什么以及它的用途,我只是想知道其他想法,所以,你可以忽略我的问题并享受 :) 【参考方案1】:

使用array_intersect函数的解决方案:

$arr = [ 17 => ["word", "power point", "excel"], 16 => ["english", "french", "farsi"] ];
$search_keys = ["english", "word"];
$keys = [];

foreach ($arr as $k => $v) 
    if (array_intersect($search_keys, $v)) $keys[] = $k;


print_r($keys);

输出:

Array
(
    [0] => 17
    [1] => 16
)

【讨论】:

以上是关于如何在PHP的二维数组中进行模糊搜索?的主要内容,如果未能解决你的问题,请参考以下文章

搜索框实现模糊查询方法 - js

如何使用 Lodash java-script 库进行模糊搜索?

如何在 Redis 中进行模糊搜索

关于Lucene怎么使用SpanQuery进行模糊搜索

js实现模糊查询

如何进行模糊查找文件