使用通配符的Php搜索数组

使用通配符的Php搜索数组,php,arrays,wildcard,Php,Arrays,Wildcard,我试图搜索一个数组,其中包含如下模式 mike_45 peter_23 jim_12 并希望以某种方式搜索特定的模式,如 array_search('mike*',$array); 有人能给我建议一个有用的方法吗 提前感谢…只需在此处使用: 使用array\u search()我不认为这是可能的。我想试试。再看看。未经测试: $pattern = 'mike*'; $array = array('mike_45','peter_23','jim_12'); $array = array_fi

我试图搜索一个数组,其中包含如下模式

mike_45
peter_23
jim_12
并希望以某种方式搜索特定的模式,如

array_search('mike*',$array);
有人能给我建议一个有用的方法吗

提前感谢…

只需在此处使用:

使用
array\u search()
我不认为这是可能的。我想试试。再看看。未经测试:

$pattern = 'mike*';
$array = array('mike_45','peter_23','jim_12');
$array = array_filter($array, function($entry) use ($pattern) {
  return fnmatch($pattern, $entry);
});

需要PHP5.3,也请参见我对hsz答案的评论。除了这个不需要重写搜索模式外,它与之类似。

通配符搜索的另一种方法是将数组转换回字符串变量,然后使用strpos函数。如果字符串可以匹配任何数组项,则这将提供true/false逻辑on

strpos(implode($array), 'mike');
这可以通过以下方式使用

if(strpos(implode($array), "mike"))
Perform actions here

这必须重写搜索模式(但这应该很复杂)。此外,这将返回所有匹配项的数组,
array\u search()
仅返回第一个匹配项的键。只需获取第一个元素的键即可:)(
$result=key(preg_match(/*..*/))
注意,如果您只想匹配数组键,必须使用
array\u FILTER\u use\u keys
,或者如果您想让回调同时访问这两个键,请使用
array\u FILTER\u use\u both
作为
array\u FILTER
的第三个参数@Aleksandarditrov=5.6
if(strpos(implode($array), "mike"))
Perform actions here