在数组值中递归搜索字符串值?

时间:2018-10-04 03:08:19

标签: php arrays recursion search

具有递归功能的新功能,我想创建搜索引擎取决于用户输入的值,并从数组值中获取用户输入的所有单词

例如我有这个数组:

$array = array('it', 'pro', 'gram', 'mer', 'programmer');
$string = "itprogrammer";

对不起,语法不好。如果有人可以帮助我,我会非常感激。谢谢您的帮助。

1 个答案:

答案 0 :(得分:3)

您可以使用array_filter过滤掉数组中不是$string的子字符串的任何值。请注意,我已经使用stripos进行不区分大小写的搜索,如果要使搜索区分大小写,请改用strpos

$array = array('pro', 'gram', 'merit', 'program', 'it', 'programmer'); 
$string = "programit";
print_r(array_filter($array, function ($v) use($string) { return stripos($string, $v) !== false; }));

输出:

array
(
    [0] => pro
    [1] => gram
    [3] => program
    [4] => it
)

更新

这是一个递归函数,给出相同的结果。

function find_words($string, $array) {
    if (count($array) == 0) return $array;
    if (stripos($string, $array[0]) !== false)
        return array_merge(array($array[0]), find_words($string, array_slice($array, 1)));
    else
        return find_words($string, array_slice($array, 1));
}

两种方法在rextester上的演示