具有递归功能的新功能,我想创建搜索引擎取决于用户输入的值,并从数组值中获取用户输入的所有单词
例如我有这个数组:
$array = array('it', 'pro', 'gram', 'mer', 'programmer');
$string = "itprogrammer";
对不起,语法不好。如果有人可以帮助我,我会非常感激。谢谢您的帮助。
答案 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上的演示