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

如何检查多维数组中键是否以'1.1.'开头并统计对应数值?

解决多维数组中统计键以'1.1.'开头的数值总和问题

嘿,看来你卡在多维数组的遍历统计上了!别担心,咱们用递归遍历的方法就能搞定——毕竟多维数组的嵌套层级不固定,递归是最靠谱的方式。

核心思路

因为数组是多层嵌套的,咱们需要写一个递归函数,它会:

  • 遍历当前层级的每个元素
  • 如果遇到子数组,就自己调用自己深入进去
  • 每次检查元素的键是否以'1.1.'开头,是的话就把对应的数值加到总和里

完整代码示例

function count11PrefixedValues($array) {
    $total = 0;
    
    foreach ($array as $key => $value) {
        // 如果是子数组,递归遍历
        if (is_array($value)) {
            $total += count11PrefixedValues($value);
        } else {
            // 检查键是否以'1.1.'开头
            // PHP 8+ 可以用 str_starts_with
            if (str_starts_with($key, '1.1.')) {
                $total += $value;
            }
            // 如果你用的是PHP 7.x及以下,替换成下面这行:
            // if (substr($key, 0, 4) === '1.1.') {
            //     $total += $value;
            // }
        }
    }
    
    return $total;
}

// 你的多维数组示例
$teamMembers = [
    0 => [
        '1.1.leader' => 5,
        '1.2.member' => 3,
        'sub_group' => [
            '1.1.co_leader' => 2,
            '2.1.trainee' => 1
        ]
    ],
    1 => [
        '1.1.senior' => 4,
        'other' => [
            'deep_sub' => [
                '1.1.junior' => 1
            ]
        ]
    ]
];

// 调用函数并输出结果
echo count11PrefixedValues($teamMembers); // 输出:12

代码解释

  • 递归遍历:不管数组嵌套多少层,函数都会自动深入到最底层,不会漏掉任何一个元素
  • 键判断:str_starts_with(PHP8+)直接判断键的前缀;如果是低版本PHP,用substr截取前4个字符对比,因为'1.1.'刚好是4个字符
  • 累加逻辑:每找到一个符合条件的键,就把对应的数值加到总和里,最后返回总数值

为什么之前的方法失败?

大概率是你之前只遍历了数组的第一层(比如只循环了$teamMembers[0]、$teamMembers[1]),没有处理嵌套在里面的子数组,导致漏掉了深层的符合条件的项。递归就能完美解决这个问题~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:17:44