2016-08-23 5 views
0

Iv는 문자열 배열을 검색하고 다른 문자열의 일부를 포함하는 문자열이 있는지 찾아 냈습니다. 전체 배열을 병합하면 다른 배열에. 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는 전체 배열이 아닌 원래 검색 항목을 추가합니다 .... EG. 하지만 값이 올바른 길이의 배열을 만들 병합합니다 배열 위의 그림과 같이 내가 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 :

이 내 솔루션입니다 제가 제대로 질문을 이해 나도 몰라,하지만 난 바랍니다.

관련 문제