六种方式计算PHP字符串中各个字符出现次数的方法

六种方式计算PHP字符串中各个字符出现次数的方法

$str = ‘AbCdEfGaBcDeFgH0234’;
s t r = s t r t o u p p e r ( str = strtoupper( str=strtoupper(str); // 不区分大小写时,全部转换成大写或者小写

方法一

$res = array(); // 定义一个结果集空数组 a r r = s t r s p l i t ( arr = str_split( arr=strsplit(str); // 将字符串转换成数组 r e s = a r r a y c o u n t v a l u e s ( res = array_count_values( res=arraycountvalues(arr); // 统计数组中各个值出现的次数 var_dump($res);

方法二

$res = array(); // 定义一个结果集空数组 a r r = s t r s p l i t ( arr = str_split( arr=strsplit(str); // 将字符串转换成数组 foreach ($arr as $key => KaTeX parse error: Expected '}', got 'EOF' at end of input: … if (!isset(res[$val])) { // 如果结果集不存在以某个字符为 key 的键
r e s [ res[ res[val] = 1; // 将其数量设置为 1
} else {
r e s [ res[ res[val] += 1; // 否则在其基础上数量加 1
} } var_dump($res);

方法三

$res = array(); // 定义一个结果集空数组 a r r = s t r s p l i t ( arr = str_split( arr=strsplit(str); // 将字符串转换成数组 u n i q u e = a r r a y u n i q u e ( unique = array_unique( unique=arrayunique(arr);
// 数组字符去重 foreach ($unique as $key => $val) {
r e s [ res[ res[val] = substr_count($str, KaTeX parse error: Expected 'EOF', got '}' at position 27: …计某字符在字符串中出现的次数 }̲ var_dump(res);

方法四 ASCII 思路

$res = array(); // 定义一个结果集空数组 a r r = s t r s p l i t ( arr = str_split( arr=strsplit(str); // 将字符串转换成数组 foreach ($arr as $key => $val)
{
a s c i i = o r d ( ascii = ord( ascii=ord(val);
if (!isset( r e s [ res[ res[ascii])) {
r e s [ res[ res[ascii] = 1;
} else {
r e s [ res[ res[ascii] += 1;
} }

foreach ($res as $key => $val) {
r e s [ c h r ( res[chr( res[chr(key)] = v a l ; u n s e t ( val; unset( val;unset(res[KaTeX parse error: Expected 'EOF', got '}' at position 8: key]); }̲ var_dump(res);

/** * 在 PHP 中字符串本身是有下标的 举个例子: * $str = ‘AaBbCcDdEeFfGg’; * $str[0]
对应的是字符 A $str[2] 对应的是字符 B * 所以根据这个特性,以上方法二和方法四可以延伸出另外两种方法 */

方法五

$res = array(); // 定义一个结果集空数组 s t r L e n = s t r l e n ( strLen = strlen( strLen=strlen(str); // 计算字符串的长度 for ($i = 0; $i < $strLen; KaTeX parse error: Expected '}', got 'EOF' at end of input: … if (!isset(res[$i])) { // 如果结果集不存在以某个字符为 key 的键
r e s [ res[ res[i] = 1; // 将其数量设置为 1
} else {
r e s [ res[ res[i] += 1; // 否则在其基础上数量加 1
} } var_dump($res);

方法六

$res = array(); // 定义一个结果集空数组 s t r L e n = s t r l e n ( strLen = strlen( strLen=strlen(str); // 计算字符串的长度 for ($i = 0; $i < $strLen; $i++)
{ // for 循环每一个字符
a s c i i = o r d ( ascii = ord( ascii=ord(str[ i ] ) ; / / 将字符转换成 A S C I I 码 i f ( ! i s s e t ( i]); // 将字符转换成 ASCII 码 if (!isset( i]);//将字符转换成ASCIIif(!isset(res[$ascii])) {
r e s [ res[ res[ascii] = 1;
} else {
r e s [ res[ res[ascii] += 1;
} }

foreach ($res as $key => $val) { // 遍历结果集
r e s [ c h r ( res[chr( res[chr(key)] = v a l ; / / 将 A S C I I 码再次转换成普通字符 u n s e t ( val; // 将 ASCII 码再次转换成普通字符 unset( val;//ASCII码再次转换成普通字符unset(res[KaTeX parse error: Expected 'EOF', got '}' at position 41: …有 ASCII 码的 key }̲ var_dump(res);

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值