2013-02-18 1 views
-2

안녕하세요, PHP의 초보자입니다. 두 단어로 중복 된 문자의 수를 입력하는 코드를 작성하는 방법을 묻습니다. 예 : "apple"과 "ball"은 전체적으로 7 개의 동일한 문자 (a, a, p, l, l, l)를 가지고 있습니다. 미리 감사드립니다 :두 단어로 중복 된 문자를 계산하는 PHP 코드

+0

p는 볼에없는) 내가 영업 이익은 모두들 중복 된 글자를 의미한다고 생각 –

+0

@Sven 말. –

+0

"b"가 출력에 없습니다. 우리가 정확한 결과를 알지 못하는 한 해결책은 좀 더 복잡합니다. – Sven

답변

1

당신은 같은 것을 할 수 있습니다.

$a = 'apple'; 
$b = 'ball'; 

$duplicates = array_count_values(array_merge(str_split($a), str_split($b))); 

// Array ([a] => 2 [p] => 2 [l] => 3 [e] => 1 [b] => 1) 
print_r($duplicates); 

단어 사이에 일치하는 총 개수를 확인하려면이 작업을 수행 할 수 있습니다.

$totalMatches = 0; 

foreach($duplicates as $count) { 
    if($count > 1) 
     $totalMatches += $count; 
} 

// 7 matches! 
echo $totalMatches . ' matches!'; 
+0

고마워요. 그렇다면 지금은 얼마나 많은 나머지 문자를 계산하지 않으시겠습니까? 예 : "christine"과 "tin"은 (chrise) 덕분에 다시 6을 출력합니다. –

+0

'count ($ duplicates) - $ totalMatches' 만하면됩니다. –

0

str_split 문자열을 입력 한 다음 배열 자체와 중복 항목을 비교합니다.

1

아니 가장 효율적인하지만 틀림없이 간단한 :

$word1 = "apple"; 
$word2 = "ball"; 
print_r(array_count_values(str_split($word1.$word2))); 

출력 :

Array 
(
    [a] => 2 
    [p] => 2 
    [l] => 3 
    [e] => 1 
    [b] => 1 
) 
+0

+1 단순화하기 위해 –

0

이 될 수있다 :

$a= "apple"; 
$a.= "ball"; 
print_r(array_count_values(str_split($a))); 

출력 :

Array 
(
    [a] => 2 
    [p] => 2 
    [l] => 3 
    [e] => 1 
    [b] => 1 
) 
0
$str1 = "apple"; 
$ar1 = str_split($str1); 

$str2 = "ball"; 
$ar2 = str_split($str2); 

$res = array_merge($ar1,$ar2); 
$count = array_count_values($res); 

print_r($count); 
0
<?php 

$str1 = 'applle'; 
$str2 = 'ball'; 
$str1arr = str_split($str1); 
$str2arr = str_split($str2); 
$all = array_merge($str1arr, $str2arr); 
$countall = count($all) - count(array_intersect($str1arr, $str2arr)); 
echo "count of similar charactors (overall) =".($countall);//7! 

?> 
관련 문제