在没有php内置函数的情况下,如何获取字符串1中的字符串2发生计数

问题描述

| 如何在没有PHP内置函数的情况下获取字符串1中字符串2出现的计数。 例:
$strone = \"Arun sukumar\";
$strtwo = \"a\";

//Expected Output: 2


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

//Expected Output: 1
我需要不使用任何PHP内置函数就获得计数。 这是面试中提出的问题,这是否有逻辑?     

解决方法

        您需要花点时间,获取第一个字符。然后遍历干草堆中的每个字符,直到获得匹配为止。然后取下一个针状字符并检查干草堆的下一个字符是否匹配...继续进行直到您完全匹配针状或直到最终匹配一个字符为止。 提示:您可以使用
$string{0}
通过索引访问字符串的各个字符,其中
0
是字符串中char的从零开始的索引。     ,        
$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;
}
    ,        尝试这个
$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;

?>
    ,        不知道为什么您不希望使用内置的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;
?>