2016-08-23 125 views
0

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

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

在计算器和测试四处寻找后,我发现使用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); 
    } 
    } 

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

如果我搜索JAV如图所示阵列上方融合将创造出正确的长度的数组,但与价值:

javjavjavjavjav 

理解任何帮助,究竟这是为什么或如何纠正它会不胜感激。

+0

'$ myarray'包含什么?例如,这只是一个简单的平面阵列? – Ghost

+0

我的数组包含了诸如java,csharp,C++等单词列表,所以我期望将jav与java匹配,以便将数组合并到另一个数组中,但它会将搜索字符串合并到正确的次数中。 – D3181

+0

只是合并'$ fn'而不是'$ myarray',就像下面一样 – Ghost

回答

1

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

这是我的解决方案:

$myarray = ['java', 'java3', 'mouse', 'java2', 'keyboard']; 
$matches = []; 
foreach ($myarray as $fn) { 
    if (strpos($fn, 'jav') !== false) { 
     $matches[] = $fn; 
    } 
} 

PS:我不知道如果我理解正确你的问题,但我希望。