2016-05-06 34 views
2

"好きな"ものを返すことができます。 array_filterを試しましたが、正しく使用することはできません。配列をフィルタリングして一致を返す方法

これは私が試みたものです。 希望アウトプットは

one.php2000565、one.php999.phpです。 配列([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

と同じようpreg_grepを使用することができますarray_filterに代わるものですか? –

+1

あなたのコードは、 '$ res = array_filter .....'や単に 'print_r($ res);'のような変数内で 'array_filter'の値を得るだけです。 –

+0

yes thats私が望むもの – 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でのOPコードが正常に動作しているとコメントしてきたように。しかし、私の解決策ではなく、あなたがone.php含まれているすべての要素を必要とする

$res = preg_grep("/$search_text/",$array); 
print_r($res); 
関連する問題