【web 开发基础】PHP中获取数组的元素个数 (51)

举报
迷彩 发表于 2023/07/18 15:07:56 2023/07/18
【摘要】 前言在我们日常的开发中,除了要查询数组中的元素的键和值等数据,我们还会统计数组中的元素格式,以便更好地对数组操作,比如我们需要对数组使用for循环进行遍历(当然在实际的开发中我们会更多使用foreach来对数组进行遍历),或者当我们需要对数组中的数据进行分页的时候都需使用到数组的元素个数的统计功能。在其他的编程语言当中我们会使用数组的size或者length属性对数组的元素个数进行统计,接下...

前言


在我们日常的开发中,除了要查询数组中的元素的键和值等数据,我们还会统计数组中的元素格式,以便更好地对数组操作,比如我们需要对数组使用for循环进行遍历(当然在实际的开发中我们会更多使用foreach来对数组进行遍历),或者当我们需要对数组中的数据进行分页的时候都需使用到数组的元素个数的统计功能。在其他的编程语言当中我们会使用数组的size或者length属性对数组的元素个数进行统计,接下来我们看看在PHP中怎么统计数组中的元素个数。


统计数组中元素的个数

在PHP中统计数组元素的个数可以使用count()函数进行元素的个数的获取。具体语法格式如下:

count(目标数组)

下面我们通过实例子来了解count()的具体用法:

<?php
$arr1 = array('张三','李四','王五','李白','杜甫','白居易','王安石','苏轼','韩愈','柳宗元');
//名字和年龄
$arr2 = array('张三'=>28,'李四'=>25,'王五'=>18,'李白'=>19,'杜甫'=>20,'白居易'=>21);

$arr3 = array(
	array('张三'=>28,'李四'=>25,'王五'=>18,'李白'=>19,'杜甫'=>20,'白居易'=>21),
	array('张三'=>28,'李四'=>25,'王五'=>18,'李白'=>19,'杜甫'=>20,'白居易'=>21),
	array('张三'=>28,'李四'=>25,'王五'=>18,'李白'=>19,'杜甫'=>20,'白居易'=>21),
	array('张三'=>28,'李四'=>25,'王五'=>18,'李白'=>19,'杜甫'=>20,'白居易'=>21)
);


echo '<br>';
echo '数组$arr1中元素的个数为'.count($arr1);
echo '<br>';
echo '数组$arr2中元素的个数为'.count($arr2);
echo '<br>';
echo '二维数组$arr3中元素的个数为'.count($arr3);

echo '<br>';
echo '二维数组$arr3中所有元素的个数为'.count($arr3,1);
?>

执行结果如下:


除了使用count()函数之外,我们还可以使用array_count_values()函数对数组内的元素值进行统计,并且返回一个以函数值为“键值”、以函数值个数为“元素值”的数组。

下面通过例子介绍如何使用array_count_values()函数统计数组的元素值个数,代码如下:

<?php
//名字和年龄
$arr2 = array('张三'=>28,'李四'=>25,'王五'=>18,'李白'=>19,'杜甫'=>20,'白居易'=>21);

print_r(array_count_values($arr2));

执行结果如下:


总结

  1. 数组$arr1通过count()函数返回整数10。因为数组$arr1有10个数组元素。

  2. 如果数组是一个二维数组。count()只统计了数组内的4个内嵌数组的数量,也就是只统计数组(最外层)第一层的元素数量

  3. count($arr3,1)这一语句中,count()函数设置了一个模式(mod)为整数“1”。这个模式(mod)设置为整数“1”的意义是,count统计的时候要对数组内部所有的内嵌数组进行循环查询,所以最终的结果是所有内嵌数组的个数加上内嵌数组内元素的个数,即4个内嵌数组加上24个数组元素,一共28个元素。

4.组$arr2为一个联合(关联)数组,通过array_count_values($arr2)统计数组内元素值的个数和分布,然后以键值和值的形式返回一个数组。每个元素都有一个,如果存在相同的元素值,虽然它们的键值完全不同,也会统计到一起

5.array_count_values()只能用于一维数组,主要是因为它不能把内嵌的数组当作元素进行统计。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。