查找字符串数组中的字符串的一部分
问题描述:
我一直在寻找一种方法来搜索字符串数组,并查找是否有任何字符串包含另一个字符串的一部分,如果有的话我合并整个数组到另一个阵列上。 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
理解任何帮助,究竟这是为什么或如何纠正它会不胜感激。
答
函数strpos返回false或0,所以数组匹配不会保存任何带有文本jav的单词。
这是我的解决方案:
$myarray = ['java', 'java3', 'mouse', 'java2', 'keyboard'];
$matches = [];
foreach ($myarray as $fn) {
if (strpos($fn, 'jav') !== false) {
$matches[] = $fn;
}
}
PS:我不知道如果我理解正确你的问题,但我希望。
'$ myarray'包含什么?例如,这只是一个简单的平面阵列? – Ghost
我的数组包含了诸如java,csharp,C++等单词列表,所以我期望将jav与java匹配,以便将数组合并到另一个数组中,但它会将搜索字符串合并到正确的次数中。 – D3181
只是合并'$ fn'而不是'$ myarray',就像下面一样 – Ghost