用 count() 最直接判断 PHP 数组键数量,它返回存在且未被 unset 的键个数;筛选键数等于 N 的数组需用 array_filter() 配合 count($item) === N。
怎么快速判断一个 PHP 数组有多少个键
用
最直接,它返回数组中元素个数(即键的数量),对索引数组和关联数组都有效。注意:它不区分键类型,只数“存在且非被 unset 的键”。
常见误判点是把
和
混用——后者返回键名列表,再套一层
是冗余操作。
筛选出键数量等于 N 的数组(如只留 3 个键的子数组)
PHP 没有内置函数直接按键数量批量筛选数组,需手动遍历 + 条件过滤。典型场景是处理一批用户数据,只保留字段数恰好为 3 的记录。
用
配合匿名函数,内部调用
若原始数据是二维数组(如
),则每个
是一维子数组,
就是它的键数
避免在回调里用
—— 它只是
的别名,语义模糊,可读性差
筛选键数量 ≥ 或 ≤ 某值的数组时要注意什么
比较运算符本身没问题,但容易忽略空数组、含
键或数字键重复的情况。PHP 中
实际只有 1 个键(后赋值覆盖),
返回 1,不是 2。
如果数组可能含
值或空字符串作为键(极少但合法),
仍会计入
嵌套数组不自动展开:
返回 2,不是 5;要算总键数得递归统计
性能敏感场景下,避免在循环内反复调用
—— 可提前存到变量,尤其配合
循环时
为什么用
不能筛键数
这个写法本身就有问题:
第二个参数是「搜索值」,不是「键数量」,第三个参数是严格比较开关,跟键个数完全无关。有人误以为传
能获取所有键再计数,但这是多此一举,还可能因值为
的元素干扰结果。
PHP 8.5.5
PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。
下载
立即学习
“
PHP免费学习笔记(深入)
”;
真正需要的是
,不是绕路查键再数。最简路径就是最稳路径。
count()count()array_keys()count()array_filter()count($item)$users = [['name'=>'a','age'=>20], ['id'=>1,'city'=>'bj','role'=>'admin']] $itemcount($item)sizeof()count()$filtered = array_filter($data, function($item) {
return count($item) === 3;
});null[0 => 'a', 0 => 'b']count()nullcount()count([['a','b'], ['c']])count()forarray_keys($arr, null, true)array_keys()nullnullcount($arr)