2016-05-06 63 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

OP代码工作正常问题是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); 
相关问题