You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按条件统计PHP数组元素数量?寻求非循环的优化方案

统计数组中type=0元素的简洁方法

嘿,这个需求我太熟了!不用手动写循环判断的话,PHP里有几个现成的数组函数能帮你快速搞定,给你分享两个实用方案:

方案一:array_filter + count 直观过滤统计

这是最容易理解的方式,先用array_filter()筛选出所有符合type=0的元素,再用count()统计筛选后的数组长度:

首先先修正你数组的语法(注意PHP数组里键值对要用=>而不是=):

$arr = [
    ["name" => "Martin", "type" => "0"],
    ["name" => "Jack", "type" => "0"],
    ["name" => "Tiam", "type" => "1"]
];

然后执行统计:

$countType0 = count(array_filter($arr, function($item) {
    // 这里用严格相等判断,避免类型混淆(比如数字0和字符串"0")
    return $item['type'] === '0';
}));

echo $countType0; // 输出预期的2

方案二:array_column + array_count_values 高效批量统计

如果你的数组比较大,或者之后还需要统计其他type的值,这个方法更高效:先把所有type字段提取成一维数组,再用array_count_values()统计每个值的出现次数,直接取"0"对应的数量即可:

// 提取所有type字段到一维数组
$allTypes = array_column($arr, 'type');
// 统计每个type值的出现次数
$typeCounts = array_count_values($allTypes);
// 用null合并运算符防止"0"不存在时报错,默认返回0
$countType0 = $typeCounts['0'] ?? 0;

echo $countType0; // 输出2

这个方法的好处是,一次处理就能拿到所有type值的统计结果,比如之后要拿type=1的数量,直接用$typeCounts['1']就行,非常方便。

补充一下:你之前用count($arr)返回3是正常的,因为它统计的是整个数组的顶层元素个数,不管元素内部的type值,所以我们需要通过过滤或提取字段来得到目标子集的数量。

内容的提问来源于stack exchange,提问作者Martin AJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:22:43