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

PHP数组搜索统计函数问题求助:统计指定字符串出现次数

帮你排查函数返回0的问题

嘿,我一眼就看到几个导致你的函数始终返回0的问题,咱们一个个来解决:

1. 变量名不匹配,根本没用到传入的数组

你函数的第一个参数是$searchVPNArrayResults,但在foreach循环里却用了$vpnSessionArray——这俩变量名完全不一样啊!函数里根本没使用你传入的目标数组,反而可能在引用一个未定义的外部变量,这肯定统计不到任何内容。

2. 大小写敏感导致匹配失败

strpos()是区分大小写的字符串查找函数,你把$may设为小写的'may',但你的数组条目里是'May'(首字母大写),所以strpos会判定这两个字符串不匹配,自然计数一直是0。

3. 冗余的参数赋值

你在函数定义里声明了$may参数,但紧接着就在函数内部把它赋值为'may',这直接覆盖了传入的参数值,完全没必要保留这个参数(除非你想让搜索词可配置,那就别在内部硬赋值)。


修正后的代码

这里给你两种方案,第一种是针对统计May的专用函数,第二种是更通用的可配置版本:

专用统计May的版本

<?php 
function MayVPNCount($vpnSessionArray) {
    $maycount = 0;
    foreach($vpnSessionArray as $oneVPNSession){
        // 使用stripos不区分大小写,避免大小写差异导致的匹配失败
        if (stripos($oneVPNSession->logoutTime, 'May') !== false) {
            $maycount += 1;
        }
    }
    return $maycount;
} 
?>

通用统计任意月份的版本(更推荐)

<?php 
function countVPNByMonth($vpnSessionArray, $targetMonth) {
    $count = 0;
    foreach($vpnSessionArray as $oneVPNSession){
        if (stripos($oneVPNSession->logoutTime, $targetMonth) !== false) {
            $count += 1;
        }
    }
    return $count;
}

// 调用示例:统计May的次数
$mayCount = countVPNByMonth($yourActualVPNArray, 'May');
echo $mayCount; // 现在应该能得到正确的4啦
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:24:09