我一直在寻找一种方法来搜索一个字符串数组,并查找是否有任何字符串包含另一个字符串的一部分,如果有,那么我将整个数组合并到另一个数组。 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
任何帮助,以明白为什么这是或如何纠正它将不胜感激。
答案 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:我不知道我是否理解你的问题,但我希望。