2017-01-26 8 views
-2

내가 문자열의 하위 문자열이 발생 횟수를 계산 할 수있는 함수를 작성하고 싶습니다 나 strlen + SUBSTR + strpos를 사용하여 문자열의 하위 문자열이 발생 횟수를 계산하는 것은, ONLY + SUBSTR + strpos를 나 strlen 사용 PHP에서. substr_count를 사용하지 않고만 PHP

!

예 : fn('iwritecodeiwritecode-','i');

덕분에 앞서

+3

망가 교사는 숙제 – RiggsFolly

+1

의 일부 narly 비트와 함께 올하지만 당신도 아무것도 시도하지 않은 그래서 숙제가 당신을 위해 끝낼 수있는 장소가 아니기 때문에 우리는 도움이되지 수 있습니다. 당신이 무언가를 시도하고 문제가있는 경우, 특정 문제에 대해 특정 질문을하십시오. 우리는 또한 배열로 취급 할 수있는 tryer – RiggsFolly

+0

PHP는 문자열을 도와 이용 약관 기꺼이 이상입니다. –

답변

0
function fn($string, $char){ 
    $count=0; 
    for($i=0; $i<strlen($string);$i++){ 
     if($string[$i] == $char){ 
      $count++; 
     } 
    } 
    print($count); 
} 

fn('iwritecodeiwritecode-','i'); 

나는 희망이 건배를하는 데 도움이!

+0

누군가의 숙제를 축하 드리며, 그것은 정말로 당신의 "좋은"이야기입니다. 난 그냥 그/그녀가 그것을보고도 당신을 upvote에 귀찮게하지 않은 사실을 감안할 때 영업 이익도이 당신에게 가상의 인터넷 포인트를주고 귀찮게 것, 궁금해. 숙제 거지는 무시해야하며, 답이 맞으면 고맙게 여기지 않을 사람을 도울 시간을 낭비해야합니다. – Mjh

+0

답변 해 주셔서 감사합니다. 나는 당신이 당신의 코드에 추가해야 할 것이 있다는 것을 알아 차렸다. 즉, 단일 문자에 대해서만 작동합니다. 사용자가 함수에서 두 개 이상의 문자를 전달하면 어떻게 될까요? – Perumal

+0

@Mjh 그런 질문에 대해 의사 코드 나 도움 말을 무엇을 제안합니까?나에게 한가지 더 호의를 베풀고 그와 같은 질문이나 특정 유형의 감사에 대답하지 못하게하는 조건/규칙/조건을 연결해주십시오! – sT0n3

0

난 내 자신의 최선의 해결책을 마련했습니다.

<?php 

    $str = "iwritecodeiwritecode"; 

    function find_substr_count($str, $substr) { 
     $substr_len = strlen($substr); 
     $substr_count = 0; 
     for($i = 0; $i < strlen($str); $i++) { 
      $substr_temp = ''; 
      for($j = $i; $j < $i + $substr_len; $j++) { 
       if($j < strlen($str)) { 
        $substr_temp .= $str[$j]; 
       } 
      } 

      if($substr_temp == $substr) { 
       $substr_count += 1; 
      } 
     } 

     return $substr_count; 
    } 

    echo find_substr_count($str, "i"); 

?> 

단일 문자에만 사용할 수있는 것은 아닙니다. 당신은 또한 같은 기능에 두 개 이상의 문자를 통과 시도 할 수 있습니다 : 난 내 최선을 준

echo find_substr_count($str, "write");

당신을 도울 수 있습니다.

희망이 있습니다.

0

이 작업에 대한 strlen() 또는 substr() 필요하지 않습니다.

문자열을 반복 루프로 반복하고 성공한 바늘이있을 때마다 strpos()의 출력을 앞당겨 성공한 횟수를 계산하십시오.

이 기술의 "마법"은 이전의 strpos() 값 (1을 더한 값)을 모든 후속 strpos() 호출의 시작점으로 사용하고 있습니다.

코드 : (Demo) 미래의 독자들에게

function countSubstrings($haystack,$needle){ 
    $pos=-1; // start at -1 so that first iteration uses $pos of 0 as starting offset 
    $tally=0; 
    while(($pos=strpos($haystack,$needle,++$pos))!==false){++$tally;} 
    return $tally; 
} 
echo countSubstrings('iwritecodeiwritecodeiwritecode','i'); // 6 
echo countSubstrings('iwritecodeiwritecodeiwritecode','Perumal'); // 0 
echo countSubstrings('iwritecodeiwritecodeiwritecode','write'); // 3 

주의 사항,이 질문은 가장 좋은 방법이 아닙니다. 올바른 방법은 기존 php 함수 substr_count()을 호출하는 것입니다.

echo substr_count('iwritecodeiwritecodeiwritecode','i');