поиск строки в значениях массива рекурсивно? - PullRequest
0 голосов
/ 04 октября 2018

новый с рекурсивной вещью, и я хочу, чтобы поисковая система зависела от значения, введенного пользователем, и получала его из значений массива всех слов в значении, которое пользователь вводил

, например, у меня есть этот массив:

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

извините, плохая грамматика.если кто-то может помочь, я очень ценю это.спасибо за вашу помощь.

1 Ответ

0 голосов
/ 04 октября 2018

Вы можете использовать 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...