Я хочу вернуть предметы, которые «похожи» на что-то другое.
Я попытался array_filter, но я не могу использовать его правильно.
Вот что я попробовал.
желаемый выход
one.php2000565, one.php999.php.
Array ([0] =>
one.php2000565 [1] => two.php [2] => three.php [3] => one.php999.php [4] => four.php)
$search_text = 'one.php';
array_filter($array, function($a) use ($search_text) {
return ( strpos($a, $search_text) !== false );
});
Array([0] => one.php2000565[1] => two.php[2] => three.php[3] => one.php999.php[4] => four.php)
$search_text = 'one.php';
array_filter($array, function($a) use ($search_text) {
return ( strpos($a, $search_text) !== false );
});
ты можешь попробовать array_filter:
$search_text = 'one.php';
array_filter($yourArray, function($el) use ($search_text) {
return ( strpos($el, $search_text) !== false );
});
$res = array_filter($files, function($files) use ($search_program) {
return ( strpos($files, $search_program) !== false );
});
print_r($res);
Вы можете попробовать следующее решение: —
$example = array([0] => one.php2000565[1] => two.php[2] => three.php[3] => one.php999.php[4] => four.php);
$searchword = 'one.php';
$matches = array_filter($example, function($var) use ($searchword) { return preg_match("/\b$searchword\b/i", $var); });
Это может помочь вам.
Вы не назначаете результат array_filter
, РНР array_filter
возвращает измененный массив. Так что просто используйте:
$array = array_filter($array,
function($a) use ($search_text) {
return (
strpos($a, $search_text) !== false
);
}
)
Как я уже говорил, код OPs работает нормально с array_filter
просто нужно назначить отфильтрованное значение в переменной. Но мое решение является альтернативой array_filter
вместо этого вы можете использовать preg_grep
как
$res = preg_grep("/$search_text/",$array);
print_r($res);