2012-03-26 4 views
0

이 방법을 사용하면 $ a와 $ r 두 문자열에서 공통 문자를 찾을 수 있지만 첫 문자는 인쇄되지 않습니다. 또한 $는 이미 공통 문자를 수집하여 여러 번 인쇄하지 못하도록합니다 (각 문자는 한 번만 인쇄해야합니다). 그렇게하지 않습니다. 내가 뭘 잘못했는지 말해줘.문자열에서 공통 문자 찾기

<?php 
$a="BNJUBCI CBDIDIBO"; 
$r="SBKJOJLBOU"; 
$already=""; 
for($i=0;$i<strlen($r);$i++) 
{ 
    if (stripos($a,$r[$i])!=FALSE) 
    { 
     if (stripos($already,$r[$i])==FALSE) 
     { 
      $already=$already.$r[$i]; 
      echo "already=".$already."<br>"; 
      echo $r[$i]."<br>"; 
     } 
    } 
} 
?> 

답변

5

사용 !==FALSE 대신 !=FALSE. 문제는 stripos이 바늘이 건초 더미의 시작 부분에 있고 0이 거짓 인 경우 0을 반환한다는 것입니다. !==을 사용하면 실제로는 결과가 0이 아닌 사실 false가되도록합니다.

이것은 실제로 docs에 나열됩니다. 여기서 "RTM"이 적합 할 수 있습니다.

부울 FALSE를 반환 할 수
이 경고 기능 아니라 논리 FALSE 값을 반환 할 수있다. 자세한 내용은 부울에 대한 절을 읽으십시오. 이 함수의 반환 값을 테스트하려면 === 연산자를 사용하십시오.

+0

Nice get Kolink! – buley

+0

감사합니다. $를 사용하여 오류를 수정하려면 == 대신 ===를 넣어야했습니다. –

+0

이 답이 문제를 해결 한 경우 수락으로 표시하십시오.) –

0

나는 이것에 대한 훨씬 간단한 해결책이 문자열을 배열로 만들고 그것들을 비교하는 것이라고 생각할 것입니까?

뭔가 같은 : 당신에게 $의 R에 존재하는 $ A의 모든 문자열을 반환해야합니다

<?php 
$a="BNJUBCI CBDIDIBO"; 
$r="SBKJOJLBOU"; 

$shared = implode('' , array_intersect(str_split($a) , str_split($r))); 
?> 

+0

check str1 = raahul str2 = parul final = raaul이 중 하나가 있어야하는 동안 'a'현상이 두 개 있습니다. – atjoshi

3

PHP에서 두 문자열의 교차점을 찾을 수있는 간단한 방법 그것들을 배열로 바꾸고 그 목적을 위해 내장 함수를 사용하는 것입니다.

다음은 두 문자열 사이의 모든 고유 한 공통 문자를 보여줍니다.

<?php 
    $a="BNJUBCI CBDIDIBO"; 
    $r="SBKJOJLBOU"; 

    $a_arr = str_split($a); 
    $r_arr = str_split($r); 

    $common = implode(array_unique(array_intersect($a_arr, $r_arr))); 

    echo "'$common'"; 
?> 
+0

도움을 주셔서 감사합니다. –

+0

간단하고 우아한, 감사합니다 :) – Laurent