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 關注
- 111 瀏覽
添加回答
舉報