2016-05-06 4 views
2

Я хочу вернуть элементы, которые «как» что-то еще. Я попробовал 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); 
}); 
+0

Вам нужны все элементы, которые содержат one.php? –

+1

Ваш код отлично работает, просто получите значение 'array_filter' внутри переменной, как' $ res = array_filter ..... 'и просто' print_r ($ res); ' –

+0

да, что я хочу – ernys

ответ

1
$res = array_filter($files, function($files) use ($search_program) { 
    return (strpos($files, $search_program) !== false); 
}); 
print_r($res); 
1

вы можете попробовать array_filter:

$search_text = 'one.php'; 

array_filter($yourArray, function($el) use ($search_text) { 
     return (strpos($el, $search_text) !== false); 
}); 
0

вы можете попробовать следующее решение: -

$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); }); 

Это может вам помочь.

+0

Он будет перечислять элемент, содержащий код one.php –

+0

OPs работает нормально, проблема в OP не получает значение внутри переменной [проверьте это] (https://3v4l.org/Hcmg0) –

+0

Да Я читаю комментарии, не волнуйтесь. –

0

Вы не назначили результат array_filter. PHP array_filter возвращает измененный массив. Так просто использовать:

$array = array_filter($array, 
    function($a) use ($search_text) { 
     return ( 
      strpos($a, $search_text) !== false 
     ); 
    } 
) 
0

Как я уже отметил, что ФОС код работает отлично с array_filter просто нужно присвоить отфильтрованное значение в переменной. Но мое решение альтернатива array_filter вместо этого вы можете использовать preg_grep вроде как

$res = preg_grep("/$search_text/",$array); 
print_r($res);