2016-08-23 123 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:我不知道如果我理解正確你的問題,但我希望。