2017-01-26 72 views
-2

我想編寫一個函數,它可以使用strlen + substr + strpos來計算子字符串在字符串中出現的次數,在PHP中。使用strlen + substr + strpos只計算一個字符串中出現子字符串的次數PHP

沒有使用substr_count

例如:fn('iwritecodeiwritecode-','i');

感謝提前

+3

不要老師拿出作業 – RiggsFolly

+1

的一些narly位,但因爲你有沒有嘗試任何事情,我們不能幫助,因爲SO是不要讓你的功課,爲你做一個地方。如果你嘗試了某些東西並遇到問題,那麼可以詢問關於你遇到的具體問題的具體問題。我們非常樂意幫助一個測試者 – 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

祝賀你做某人的功課,這真的是你的「好」。我只是想知道,考慮到他/她看到了這一點,甚至懶得加入你,OP還是會費心爲你提供假想的互聯網點。家庭作業乞丐應該被忽視,而你的答案是正確的,你只是浪費你的時間去幫助一個甚至不理解它的人。 – 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()

只用一個while循環迭代你的字符串,每找到一個成功的針就提前輸出strpos()並計算成功匹配的次數。

該技術中的「魔術」使用前面的strpos()值(加1)作爲所有後續調用的起始點。

代碼:(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'); 
相關問題