如何在没有php内置函数的情况下获取字符串1中出现的字符串2的计数
如何在没有php内置函数的情况下获取字符串1中出现的字符串2的计数 例如:如何在没有php内置函数的情况下获取字符串1中出现的字符串2的计数,php,string,count,Php,String,Count,如何在没有php内置函数的情况下获取字符串1中出现的字符串2的计数 例如: $strone = "Arun sukumar"; $strtwo = "a"; //Expected Output: 2 $strone = "Arun sukumar"; $strtwo = "uk"; //Expected Output: 1 我需要在不使用任何php内置函数的情况下获取计数 这是采访中提出的问题,有什么逻辑吗?不确定为什么不想使用内置的PHP函数,因为它们会更快,但类似这样的功能会起作用
$strone = "Arun sukumar";
$strtwo = "a";
//Expected Output: 2
$strone = "Arun sukumar";
$strtwo = "uk";
//Expected Output: 1
我需要在不使用任何php内置函数的情况下获取计数
这是采访中提出的问题,有什么逻辑吗?不确定为什么不想使用内置的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;
?>
您需要取针,取第一个字符。。然后迭代每个haystack字符,直到找到匹配的字符。然后拿下下一块针,检查下一块干草堆是否匹配。。。继续,直到您获得针的完全匹配或确定匹配字符 提示:您可以使用
$string{0}
按索引访问字符串的各个字符,其中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;
}
$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;
?>
$string='Arun sukumar';
$sub_string='a';
$count=0;
对于($i=0;$i$flag”;
}
如果($flag==1){
$count++;
$flag=0;
}
}
echo$count;
?>
我想到了通过字符循环…不想使用内置的PHP函数吗?不要使用PHP。这是采访中提出的问题。。。。。。。。。。我想知道它背后有什么逻辑吗?是的,这当然是一个家庭作业问题,strtolower
、strlen
、和substr
都是内置的PHP函数。OP所寻找的是不可能的。他必须使用至少两个内置函数来实现他的目标。如果他想要几十行的话,他可以只使用strtolower。@Dark:不,你可以用基本的语言结构。那样做毫无意义。。除了学术练习,我需要没有任何内置功能的。这是在一次采访中被问到的,有什么答案吗?@Dark:可以对字符串进行迭代。空索引将返回“\0”
,因此不需要strlen。strtolower可以由if/chr(ord($c)&0xDF)
替换。尽管如此,这还是毫无意义的。您能否简单介绍一下上述问题的示例$string{0}
已被弃用。您应该使用$string[0]
。虽然欢迎使用此代码段,并可能提供一些帮助,但这将说明如何以及为什么解决此问题。记住,你是在将来回答读者的问题,而不仅仅是现在提问的人!请在回答中添加解释,并说明适用的限制和假设。谢谢@TobySpeight。我是新来的。我想知道关于解释,我应该在代码中添加注释吗?最好写一个介绍性的描述,并且只在为自己编写代码时对代码进行注释。您的答案似乎显示了如何迭代字符串,在每个索引处执行比较,因此这可能是解释的开始。如果我错了,那么描述我是如何错的将是完美的!谢谢@TobySpeight