如何设置大写字符等于小写字符,PHP

我为文本中的重复字符计数创建函数,我对大写和小写字符有问题,大写不计数,因为与小写不一样,我的问题是,我如何计算大写字符?


    <?php

function fillCharCounts($str, $count) 

    for ($i = 0; $i < strlen($str); $i++) 

        $count[ord($str[$i])]++; 


    for ($i = 0; $i < 256; $i++) 

        if($count[$i] > 1) 

            echo chr($i) . " " .  

                         ($count[$i]) . "\n"; 


function printDups($str) 

    $count = array(); 

    for ($i = 0; $i < 256; $i++) 

    $count[$i] = 0; 

    fillCharCounts($str, $count); 




$str = "Nama saya Adhi Dewandaru"; 

$str = preg_replace("/([^A-Za-z])/","",$str); 


printDups($str); 

但输出总是显示


 a 6

 d 2

预期输出为


a 7

d 3


当年话下
浏览 86回答 2
2回答

喵喔喔

仅更新此功能function fillCharCounts($str, $count)&nbsp;{&nbsp;for ($i = 0; $i < strlen($str); $i++)&nbsp;&nbsp; &nbsp; $count[ord(strtolower($str[$i]))]++;&nbsp;for ($i = 0; $i < 256; $i++)&nbsp;&nbsp; &nbsp; if(($count[$i] > 1 && $i == '097' || $i == '100'))&nbsp; &nbsp; &nbsp; &nbsp; echo chr($i) . " " .&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;($count[$i]) . "\n";&nbsp;&nbsp; }&nbsp;输出将是a 7 d 3

米琪卡哇伊

这更容易解决,方法是使用 将字符串转换为小写,使用strtolower将其拆分为单个字符str_split,然后使用 计算值array_count_values,最后使用 过滤掉非重复项array_filter:$str = "Nama saya Adhi Dewandaru";&nbsp;$dups = array_filter(array_count_values(str_split(strtolower($str))), function ($v) { return $v > 1; });print_r($dups);输出:Array(&nbsp; &nbsp; [n] => 2&nbsp; &nbsp; [a] => 7&nbsp; &nbsp; [ ] => 3&nbsp; &nbsp; [d] => 3)如果您不希望输出中包含特定字符,则可以进一步过滤此数组:$dups = array_filter($dups, function ($v, $k) { return !in_array($k, array(' ', 'n')); }, ARRAY_FILTER_USE_BOTH);print_r($dups);输出:Array(&nbsp; &nbsp; [a] => 7&nbsp; &nbsp; [d] => 3)或将其与上一个过滤器结合使用:$str = "Nama saya Adhi Dewandaru";&nbsp;$dups = array_filter(array_count_values(str_split(strtolower($str))), function ($v, $k) { return $v > 1 && !in_array($k, array(' ', 'n')); }, ARRAY_FILTER_USE_BOTH);print_r($dups);输出:Array(&nbsp; &nbsp; [a] => 7&nbsp; &nbsp; [d] => 3)
打开App,查看更多内容
随时随地看视频慕课网APP