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

PHP如何统计二维数组中的重复值?

解决二维数组中用户名出现次数统计的问题

嘿,我来帮你搞定这个二维数组的统计需求!其实实现起来很简单,下面给你两种可行的方案,都能输出你想要的格式:

方案一:手动遍历计数(兼容性强)

先把你的原始数组整理成清晰的格式,然后一步步统计:

// 你的原始二维数组
$usersArray = [
    55118 => ['id' => 55118, 'usr_name' => 'Name 1', 'usr_employment' => 'Fulltime'],
    55179 => ['id' => 55179, 'usr_name' => 'Name 2', 'usr_employment' => 'Fulltime'],
    55549 => ['id' => 55549, 'usr_name' => 'Name 1', 'usr_employment' => 'Fulltime'],
];

// 初始化一个空数组,用来存储每个名字的出现次数
$nameCounts = [];

// 遍历原始数组,逐个统计用户名
foreach ($usersArray as $user) {
    $currentName = $user['usr_name'];
    // 如果名字已经在统计数组里,次数加1;否则初始化为1
    if (isset($nameCounts[$currentName])) {
        $nameCounts[$currentName]++;
    } else {
        $nameCounts[$currentName] = 1;
    }
}

// 按照要求的格式输出结果,注意单数复数的区分
foreach ($nameCounts as $name => $count) {
    echo "$name, $count " . ($count === 1 ? 'time' : 'times') . "\n";
}

运行这段代码后,输出就是你想要的:

Name 1, 2 times
Name 2, 1 time

方案二:用PHP内置函数简化代码(更高效)

如果你的PHP版本在5.5及以上,可以用array_column和array_count_values这两个内置函数,一行搞定统计部分:

// 你的原始数组(同上)
$usersArray = [
    55118 => ['id' => 55118, 'usr_name' => 'Name 1', 'usr_employment' => 'Fulltime'],
    55179 => ['id' => 55179, 'usr_name' => 'Name 2', 'usr_employment' => 'Fulltime'],
    55549 => ['id' => 55549, 'usr_name' => 'Name 1', 'usr_employment' => 'Fulltime'],
];

// 提取所有用户名到一维数组
$allNames = array_column($usersArray, 'usr_name');
// 直接统计每个名字的出现次数
$nameCounts = array_count_values($allNames);

// 同样的输出逻辑
foreach ($nameCounts as $name => $count) {
    echo "$name, $count " . ($count === 1 ? 'time' : 'times') . "\n";
}

这个方案的逻辑和手动遍历是一样的,只是用内置函数减少了代码量,效率也更高~

内容的提问来源于stack exchange,提问作者Björn C

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:52:32