在字符串数组中查找字符串的一部分

时间:2016-08-23 23:17:21

标签: php arrays string

我一直在寻找一种方法来搜索一个字符串数组,并查找是否有任何字符串包含另一个字符串的一部分,如果有,那么我将整个数组合并到另一个数组。 EG:

Searching for jav:
array->[java] -> would return this value
and add that whole array to another

在浏览了stackoverflow并进行测试之后,我发现这个解决方案使用strpos工作......有点:

$matches=array(); //just here to show the array is declared and is filled with items prior to calling 

foreach($myarray as $fn){
    if(strpos($fn,$searchString)){
        $matches = array_merge($myarray,$matches);
    }
    }

问题是,不是添加整个数组,而是每次循环添加我的搜索字符串,但经过多次检查后,我不明白为什么。添加原始搜索项而不是整个其他数组.... EG。

如果我如上所示搜索jav,数组将合并以创建一个正确长度的数组,但值为:

javjavjavjavjav

任何帮助,以明白为什么这是或如何纠正它将不胜感激。

1 个答案:

答案 0 :(得分:1)

函数strpos返回false或0,因此数组匹配不会保存任何带有文本jav的单词。

这是我的解决方案:

$myarray = ['java', 'java3', 'mouse', 'java2', 'keyboard'];
$matches = [];
foreach ($myarray as $fn) {
    if (strpos($fn, 'jav') !== false) {
        $matches[] = $fn;
    }
}
PS:我不知道我是否理解你的问题,但我希望。