2 回答
TA贡献1735条经验 获得超5个赞
仅更新此功能
function fillCharCounts($str, $count)
{
for ($i = 0; $i < strlen($str); $i++)
$count[ord(strtolower($str[$i]))]++;
for ($i = 0; $i < 256; $i++)
if(($count[$i] > 1 && $i == '097' || $i == '100'))
echo chr($i) . " " .
($count[$i]) . "\n";
}
输出将是
a 7 d 3
TA贡献1998条经验 获得超6个赞
这更容易解决,方法是使用 将字符串转换为小写,使用strtolower将其拆分为单个字符str_split,然后使用 计算值array_count_values,最后使用 过滤掉非重复项array_filter:
$str = "Nama saya Adhi Dewandaru";
$dups = array_filter(array_count_values(str_split(strtolower($str))), function ($v) { return $v > 1; });
print_r($dups);
输出:
Array
(
[n] => 2
[a] => 7
[ ] => 3
[d] => 3
)
如果您不希望输出中包含特定字符,则可以进一步过滤此数组:
$dups = array_filter($dups, function ($v, $k) { return !in_array($k, array(' ', 'n')); }, ARRAY_FILTER_USE_BOTH);
print_r($dups);
输出:
Array
(
[a] => 7
[d] => 3
)
或将其与上一个过滤器结合使用:
$str = "Nama saya Adhi Dewandaru";
$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
(
[a] => 7
[d] => 3
)
- 2 回答
- 0 关注
- 83 浏览
添加回答
举报