<?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字符串统计次数的各种方法(转)的更多相关文章

  1. 用Regex类计算一个字符串出现次数是最好方法【转载】

    我的一个朋友问我,怎么在c#或vb.net中,计算一个字符串中查找另一个字符串中出现的次数,他说在网上打了好多方法,我看了一下,有的是用replace的方法去实现,这种方法不是太好,占资源太大了.其实 ...

  2. JavaScript 字符串函数 之查找字符方法(一)

    1.JavaScript查找字符方法   首先看一张 有关字符串函数的查找字符的方法图 接下里补充里面的方法说明 2.charAt()     charAt() 方法返回字符串中指定位置的字符 语法 ...

  3. Java 一个字符串在另外一个字符串出现次数

    统计一个字符串在另外一个字符串出现次数 代码如下: package me.chunsheng.javatest; import java.util.regex.Matcher; import java ...

  4. 给出一个string字符串,统计里面出现的字符个数

    给出一个string字符串,统计里面出现的字符个数 解决方案: 使用algorithm里面的count函数,使用方法是count(begin,end,'c'),其中begin指的是起始地址,end指的 ...

  5. golang中获取字符串长度的几种方法

    一.获取字符串长度的几种方法   - 使用 bytes.Count() 统计   - 使用 strings.Count() 统计   - 将字符串转换为 []rune 后调用 len 函数进行统计   ...

  6. sh_15_字符串统计操作

    sh_15_字符串统计操作 hello_str = "hello hello" # 1. 统计字符串长度 print(len(hello_str)) # 2. 统计某一个小(子)字 ...

  7. HDOJ2017字符串统计

    字符串统计 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  8. golang 字符串统计

    golang内建只认utf8 如果传递的字符串里含有汉字什么的,最好使用 utf8.RuneCountInString() 统计 字符串统计几种方法: - 使用 bytes.Count() 统计- 使 ...

  9. linux shell脚本编程笔记(四): 获取字符串长度的七种方法

    获取字符串长度的七种方法 1. \${#str} 2.awk的length 备注:1) 最好用{}来放置变量2) 也可以用length($0)来统计文件中每行的长度 3.awk的NF 备注: -F为分 ...

随机推荐

  1. Docker Swarm bind 数据持久化

    Docker Swarm bind 数据持久化 bind:主要将工作节点宿主级文件或目录,同步挂载到容器中. 环境: 系统:Centos 7.4 x64 应用版本:Docker 18.09.0 管理节 ...

  2. Shell 常见理论问答

    (1)shell脚本中,怎么可以把某一行注释掉? 答:“#”. (2)如何执行一个shell脚本呢? 答:“sh x.sh”,“加执行./x.sh”,“bash x.sh”. (3)为了方便管理我们约 ...

  3. Linux 系统TCP连接内存大小限制 调优

    系统TCP连接内存大小限制 TCP的每一个连接请求,读写都需要占用系统内存资源,可根据系统配置,对TCP连接数,内存大小,限制调优. 查看系统内存资源 记录内存 详情:cat /proc/meminf ...

  4. final修饰符与多态

    知识点一.final 最终的可以修饰属性.方法.类1.final修饰的属性,表示常量,初始化以后值不能改变.final修饰引用数据类型的变量,引用地址不能改变.2.final修饰类,不能被继承.比如: ...

  5. opencv学习之路(23)、轮廓查找与绘制(二)——访问轮廓每个点

    一.简介 二.画出每个轮廓的每个点 #include "opencv2/opencv.hpp" using namespace cv; void main() { Mat src= ...

  6. luogu2046[NOI2010]海拔 对偶图优化

    luogu2046[NOI2010]海拔 对偶图优化 链接 https://www.luogu.org/problemnew/show/P2046 思路 海拔一定是0或者1,而且会有一条01交错的分界 ...

  7. CF932E Team Work

    思路 第二类斯特林数和组合数推式子的题目 题目要求\(\sum_{i=1}^n \left(\begin{matrix}n \\ i \end{matrix} \right) i^k\) 一个性质 第 ...

  8. hdu 1895 Sum Zero hash

    Sum Zero Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Proble ...

  9. Hive和HBase区别

    1. 两者分别是什么? Apache Hive是一个构建在Hadoop基础设施之上的数据仓库.通过Hive可以使用HQL语言查询存放在HDFS上的数据.HQL是一种类SQL语言,这种语言最终被转化为M ...

  10. appDesign

    1原则 简约,实用,懒人模式 2模块划分 以实用目的,而非以工具