2011-06-25 3 views
-3

PHPの組み込み関数を使用せずに文字列1の文字列2の出現回数を取得する方法。PHPの組み込み関数なしの文字列1の文字列2の出現数を取得する方法

例:

$strone = "Arun sukumar"; 
$strtwo = "a"; 

//Expected Output: 2 


$strone = "Arun sukumar"; 
$strtwo = "uk"; 

//Expected Output: 1 

私は、組み込み関数の任意のPHPを使用せずにカウントを取得する必要があります。

これはインタビューで尋ねられた質問です。その中に論理がありますか?

+4

宿題の質問をしてみ? – prodigitalson

+2

througnの文字をループすると... – evilone

+1

組み込みのPHP関数を使いたくないのですか? PHPを使用しないでください。 – trutheality

答えて

0
$strone = 'arun sukumar'; 
$strtwo = 'a'; 

echo parsestr($strone, $strtwo); 

function parsestr($strone, $strtwo) 
{ 
    $len = 0; 
    while ($strtwo{$len} != '') { 
     $len++; 
    } 

    $nr = 0; 

    while ($strone{$nr} != '') 
    { 
     if($strone{$nr} != ' ') 
     { 
      $data[$nr] = $strone{$nr}; 
     } 
     $nr++; 
    } 

    $newdata = $data; 

    if($len > 1) 
    { 
     $newdata = array(); 
     $j = 0; 
     foreach($data as $val) 
     { 
      $str .= $val; 
      if($j == ($len -1)) 
      { 
       $newdata[] = $str; 
       $str = ''; 
       $j = 0; 
      } 
      else 
       $j++; 
     } 
    } 
    $i = 0; 

    foreach($newdata as $val) 
    { 
     if($val == $strtwo) 
     { 
      $i++; 
     } 
    } 
    return $i; 
} 
-1

ない彼らがより速くなるでしょうので、あなたは組み込みのPHP関数を使用したくないだろうが、このような何かがうまくいく理由を確認してください:

<?php 
$haystack = 'Arun sukumar'; 
$needle = 'a'; 

// you seem to want a case insensitive search, so do a strtolower first 
$haystack = strtolower($haystack); 
$hitCount = 0; 
for ($i = 0; $i < strlen($haystack); ++$i) { 
    if ($needle === substr($haystack, $i, strlen($needle))) { 
     $hitCount++; 
    } 
} 
echo 'Output: ' . $hitCount; 
?> 
+0

um strlen、strtolower、substr arent built-in functions ???? – prodigitalson

+0

私はOPの要件を満たしているとは思わない... – Ben

+0

ここに4つの組み込み関数を使用しています... – evilone

0

あなたの針を取る必要があり、最初の文字を取得しますあなたがマッチするまで、干し草の各チャーを繰り返します。その後、針の次の文字を取って、マッチのための干し草の次のチャーをチェックしてください。

ヒント:$string{0}のインデックスで文字列の個々の文字にアクセスできます。0は、文字列のcharの0から始まるインデックスです。

+0

上記の質問の例を簡潔にすることができます –

+1

'$ string {0}'は非推奨です '$ string [0]'を使用してください –

0

この

$string = 'Arun sukumar'; 

$sub_string = 'a'; 

$count = 0; 
for($i=0;$i < strlen($string); $i++){ 

    $flag = 0; 
    $j=0; 
    if(strtolower($string[$i]) == $sub_string[$j]) 
    { 
     //echo "match"; 
     $flag = 1; 
     $k = $i; 
     for(;$j< strlen($sub_string); $j++){//echo "[".$j . $k."] $count $flag"; 
      if(strtolower($string[$k]) != $sub_string[$j]){ 
       $flag = 0; 
       break; 
      } 
      $k++; 
     }//echo "<br> $flag"; 
    } 
    if($flag == 1){ 
     $count++; 
     $flag = 0; 
    } 
} 

echo $count; 

?> 
+0

このコードスニペットは大歓迎ですが、なぜならこれが問題を解決する方法の説明(// meta.stackexchange.com/q/114762)が大幅に改善されるでしょう。あなたが今質問している人だけでなく、将来読者のための質問に答えていることを忘れないでください!説明を追加するためにあなたの答えを[編集]し、どんな制限と前提が適用されるかを示してください。 –

+0

ありがとう@TobySpeight。私はstackoverflowのために新しいです。私は説明に関して知りたいです、コードにコメントを追加すべきですか? –

+0

序文の説明を書いて、自分で書いた場合のようにコードをコメントするのが最善です。あなたの答えは、文字列を反復し、各インデックスで比較を実行する方法を示しているので、説明の始まりとなる可能性があります。もし私がそれについて間違っているなら、私が間違っていることを記述することは完璧です! –

関連する問題