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

如何统计数组/Collection中registered='no'的元素数量,解决count报错问题

现有代码的错误点

  • 循环条件错误:数组索引从0开始,$i <= count($data['attendances'])会导致最后一次循环访问不存在的下标,触发异常
  • 判断逻辑错误:if ($data['attendances'][$i]['registered'] = 'no')用了赋值运算符=,而非比较运算符==/===,会误把所有元素的registered字段都修改为no
  • count调用逻辑错误:你需要统计符合条件的元素总个数,而不是对单个字符串类型的registered字段执行count操作,字符串不支持count方法,所以触发了你遇到的报错

正确实现方案

你可以按需选择以下任意一种写法:

写法1:修改原生for循环逻辑

// 初始化计数器
$noRegisteredCount = 0;
// 循环条件改成小于数组长度,避免下标越界
for ($i=0; $i < count($data['attendances']); $i++) {
    // 用全等判断值是否为no
    if ($data['attendances'][$i]['registered'] === 'no') {
        // 符合条件则计数器+1
        $noRegisteredCount++;
    }
}
// 输出最终统计结果
echo $noRegisteredCount;

写法2:用Laravel集合方法(更简便)

从你提供的dd输出截图可以判断attendances是Laravel的Collection对象,直接用框架封装的统计方法即可,不需要手写循环:

$noRegisteredCount = $data['attendances']->where('registered', 'no')->count();
echo $noRegisteredCount;

如果attendances是普通PHP数组,也可以用array_filter实现一行统计:

$noRegisteredCount = count(array_filter($data['attendances'], function($item) {
    return $item['registered'] === 'no';
}));

内容的提问来源于stack exchange,提问作者Chonchol Mahmud

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:54:02