在 PHP 开发中,数组是一种非常常用的数据类型,我们通常会使用数组来存储一系列的数据。有时候,我们需要对数组中的不同值进行统计,比如统计某个数组中不同元素出现的次数。本文将介绍如何使用 PHP 统计数组中不同的值。
- array_count_values 函数
PHP 内置了一个函数 array_count_values
,可以用来统计数组中各个值出现的次数。该函数的原型如下:
array_count_values(array $array): array
该函数需要一个数组作为参数,并返回一个关联数组,其中键是原始数组中的不同值,值是该值在原数组中出现的次数。例如:
$array = array(1, 1, 2, 3, 3, 3); $count = array_count_values($array); print_r($count);
输出:
Array( [1] => 2 [2] => 1 [3] => 3 )
这里原数组是 [1, 1, 2, 3, 3, 3]
,函数返回的关联数组中,键 1
在原数组中出现了 2 次,键 2
在原数组中出现了 1 次,键 3
在原数组中出现了 3 次。
需要注意的是,该函数只对索引数组和关联数组有效,对于其他类型的数组,会返回一个空数组。
- 自定义函数
除了使用 array_count_values
函数,我们也可以自己编写一个函数来完成类似的功能。以下是一个示例函数:
function array_count_unique(array $array): array { $counts = array(); foreach ($array as $value) { if (isset($counts[$value])) { $counts[$value]++; } else { $counts[$value] = 1; } } return $counts; }
该函数接受一个数组,返回一个关联数组,其中键是原始数组中的不同值,值是该值在原数组中出现的次数。具体实现思路是通过遍历原数组,统计每个值出现的次数,然后以该值为键,出现次数为值,构造结果数组。
我们可以使用以下代码测试该函数:
$array = array(1, 1, 2, 3, 3, 3); $count = array_count_unique($array); print_r($count);
输出:
Array( [1] => 2 [2] => 1 [3] => 3 )
与 array_count_values
函数的结果相同。
需要注意的是,该函数只对索引数组和关联数组有效,对于其他类型的数组,会返回一个空数组。
- 性能比较
虽然使用 PHP 内置的 array_count_values
函数和自定义函数都可以完成统计数组中不同值的功能,但它们在性能上可能会有所不同。我们可以通过使用 microtime
函数来测试两种方法的性能。
以下是使用 array_count_values
函数的测试示例:
$array = range(1, 10000); shuffle($array); $start = microtime(true); $count = array_count_values($array); $end = microtime(true); echo 'array_count_values: ' . ($end - $start) . ' seconds';
以下是使用自定义函数的测试示例:
$array = range(1, 10000); shuffle($array); $start = microtime(true); $count = array_count_unique($array); $end = microtime(true); echo 'array_count_unique: ' . ($end - $start) . ' seconds';
两个测试示例的输入相同,都是一个长度为 10000 的随机数组,输出每个方法执行的时间。我们可以多次运行这两个代码片段,比较两个函数的平均运行时间。
在本人测试的环境中,两个方法的时间差异不太明显,通常 array_count_unique
函数略快于 array_count_values
函数,但两者的差异不大。因此,在实际应用中,可以根据需要选择适当的方法。
总结
本文介绍了如何使用 PHP 统计数组中不同的值。我们可以使用 PHP 内置的 array_count_values
函数,也可以自己编写一个函数。两种方法都可以完成类似的功能,但性能略有差异。在实际应用中,可以根据需要选择适当的方法。
以上是php数组统计不同的值的详细内容。更多信息请关注PHP中文网其他相关文章!

本文比较了酸和基本数据库模型,详细介绍了它们的特征和适当的用例。酸优先确定数据完整性和一致性,适合财务和电子商务应用程序,而基础则侧重于可用性和

本文讨论了确保PHP文件上传的确保,以防止诸如代码注入之类的漏洞。它专注于文件类型验证,安全存储和错误处理以增强应用程序安全性。

本文讨论了在PHP中实施API速率限制的策略,包括诸如令牌桶和漏水桶等算法,以及使用Symfony/Rate-limimiter之类的库。它还涵盖监视,动态调整速率限制和手

本文讨论了使用password_hash和pyspasswify在PHP中使用密码的好处。主要论点是,这些功能通过自动盐,强大的哈希算法和SECH来增强密码保护

本文讨论了OWASP在PHP和缓解策略中的十大漏洞。关键问题包括注射,验证损坏和XSS,并提供用于监视和保护PHP应用程序的推荐工具。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3汉化版
中文版,非常好用

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

SublimeText3 Linux新版
SublimeText3 Linux最新版

WebStorm Mac版
好用的JavaScript开发工具

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),