要统计PHP数组中非空值个数,可用五种方法:一、array_filter()配合count()过滤默认空值;二、foreach手动判断;三、array_reduce()函数式累积;四、array_filter()加ARRAY_FILTER_USE_BOTH联合键值判断;五、array_keys()与array_intersect_key()保留原始键名统计。

如果您需要获取PHP数组中实际包含的值的数量,必须区分数组的总长度与非空值的数量。以下是统计数组中非空值个数的多种方法:
该方法先过滤掉所有被视为“空”的值(如null、false、0、""、array()等),再统计剩余元素个数。它适用于需要排除逻辑上为空的值的场景。
1、定义目标数组,例如:$arr = [1, "", null, "hello", 0, false, 42];
2、调用array_filter()不传回调函数,默认移除所有空值:$filtered = array_filter($arr);
立即学习“PHP免费学习笔记(深入)”;
3、对过滤后的数组使用count():$count = count($filtered);
4、输出结果:echo $count; 此时输出为3(仅保留1、"hello"、42)
该方法提供完全可控的判断逻辑,可自定义“什么是空值”,例如保留0和"0",仅排除null和空字符串。
1、初始化计数器变量:$count = 0;
2、遍历数组每个元素:foreach ($arr as $value) {
3、添加自定义判断条件,例如:if ($value !== null && $value !== "") { $count++; }
4、循环结束后,$count即为满足条件的值的个数 此方式可精确控制“空”的定义
该方法以函数式编程方式实现统计,适合嵌套逻辑或需复用判断规则的场景。
1、定义判断函数,例如:$isNonEmpty = function($carry, $item) { return $item !== null && $item !== ""; };
2、调用array_reduce()并初始化累加器为0:$count = array_reduce($arr, function($carry, $item) use ($isNonEmpty) { return $isNonEmpty($carry, $item) ? $carry + 1 : $carry; }, 0);
3、注意:array_reduce的回调中需显式返回累加器值 回调函数必须有return语句,否则结果为null
当需要基于键和值联合判断是否计入统计时,此方法可访问键名与键值,适用于关联数组的条件计数。
1、定义带键值判断的回调函数:$callback = function($value, $key) { return is_string($value) && strlen(trim($value)) > 0; };
2、调用array_filter()并传入ARRAY_FILTER_USE_BOTH标志:$filtered = array_filter($arr, $callback, ARRAY_FILTER_USE_BOTH);
3、对结果调用count():$count = count($filtered); 此方式支持键名参与判定逻辑
该方法先获取所有非空值的键名,再通过键名交集还原原始结构中的对应元素,适用于需保留原始键名的统计需求。
1、获取所有非空值的键:$nonEmptyKeys = array_keys(array_filter($arr));
2、用这些键从原数组中提取对应元素:$nonEmptyValues = array_intersect_key($arr, array_flip($nonEmptyKeys));
3、统计提取结果:$count = count($nonEmptyValues); 结果数组保持原始键名,便于后续定位
以上就是php怎么知道数组有多少个值_PHP统计数组包含值的个数的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号