如何在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的二维数组中进行模糊搜索?的主要内容,如果未能解决你的问题,请参考以下文章