2016-05-06 95 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); 
相關問題