<?php$str = ‘AbCdEfGaBcDeFgH0234;,!-AaBbCcDdEeFfGg‘;$str = strtoupper($str); // 不区分大小写时,全部转换成大写或者小写// 方法一$res = array(); // 定义一个结果集空数组$arr = str_split($str); // 将字符串转换成数组$res = array_count_values($arr); // 统计数组中各个值出现的次数var_dump($res);// 方法二$res = array(); // 定义一个结果集空数组$arr = str_split($str); // 将字符串转换成数组foreach ($arr as $key => $val) { // 便利字符串数组if (!isset($res[$val])) { // 如果结果集不存在以某个字符为 key 的键$res[$val] = 1; // 将其数量设置为 1} else {$res[$val] += 1; // 否则在其基础上数量加 1}}var_dump($res);// 方法三$res = array(); // 定义一个结果集空数组$arr = str_split($str); // 将字符串转换成数组$unique = array_unique($arr); // 数组字符去重foreach ($unique as $key => $val) {$res[$val] = substr_count($str, $val); // 统计某字符在字符串中出现的次数}var_dump($res);// 方法四 ASCII 思路$res = array(); // 定义一个结果集空数组$arr = str_split($str); // 将字符串转换成数组foreach ($arr as $key => $val) {$ascii = ord($val);if (!isset($res[$ascii])) {$res[$ascii] = 1;} else {$res[$ascii] += 1;}}foreach ($res as $key => $val) {$res[chr($key)] = $val;unset($res[$key]);}var_dump($res);/*** 在 PHP 中字符串本身是有下标的 举个例子:* $str = ‘AaBbCcDdEeFfGg‘;* $str[0] 对应的是字符 A $str[2] 对应的是字符 B* 所以根据这个特性,以上方法二和方法四可以延伸出另外两种方法*/// 方法五$res = array(); // 定义一个结果集空数组$strLen = strlen($str); // 计算字符串的长度for ($i = 0; $i < $strLen; $i++) { // 便利字符串数组if (!isset($res[$i])) { // 如果结果集不存在以某个字符为 key 的键$res[$i] = 1; // 将其数量设置为 1} else {$res[$i] += 1; // 否则在其基础上数量加 1}}var_dump($res);// 方法六$res = array(); // 定义一个结果集空数组$strLen = strlen($str); // 计算字符串的长度for ($i = 0; $i < $strLen; $i++) { // for 循环每一个字符$ascii = ord($str[$i]); // 将字符转换成 ASCII 码if (!isset($res[$ascii])) {$res[$ascii] = 1;} else {$res[$ascii] += 1;}}foreach ($res as $key => $val) { // 遍历结果集$res[chr($key)] = $val; // 将 ASCII 码再次转换成普通字符unset($res[$key]); // 删除原有 ASCII 码的 key}var_dump($res);
php字符串统计次数的各种方法(转)
原文地址:https://www.cnblogs.com/shixiuxian/p/10421753.html