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

PHP多维数组中如何获取每组tahun和bulan对应的最大pembetulan值

实现方案

方法1:基础遍历实现(兼容性最好,支持所有PHP版本)

思路是遍历所有数组元素,以tahun和bulan的组合作为分组标识,每次比对同分组下的pembetulan值,只保留最大值:

<?php
$data = [
  ["tahun" => 2001, "bulan" => 1, "pembetulan" => 0],
  ["tahun" => 2002, "bulan" => 1, "pembetulan" => 0],
  ["tahun" => 2002, "bulan" => 1, "pembetulan" => 1],
  ["tahun" => 2003, "bulan" => 1, "pembetulan" => 0],
  ["tahun" => 2003, "bulan" => 1, "pembetulan" => 1],
  ["tahun" => 2003, "bulan" => 1, "pembetulan" => 2],
  ["tahun" => 2003, "bulan" => 1, "pembetulan" => 3],
  ["tahun" => 2003, "bulan" => 1, "pembetulan" => 4],
  ["tahun" => 2003, "bulan" => 2, "pembetulan" => 0]
];

$groupedMax = [];
foreach ($data as $item) {
    // 用tahun和bulan拼接成分组的唯一key
    $key = $item['tahun'] . '_' . $item['bulan'];
    // 如果当前分组不存在,或者当前值比已存的更大,就更新
    if (!isset($groupedMax[$key]) || $item['pembetulan'] > $groupedMax[$key]['pembetulan']) {
        $groupedMax[$key] = $item;
    }
}
// 可选:去掉临时key,重置为索引数组
$groupedMax = array_values($groupedMax);

// 输出结果
print_r($groupedMax);
?>

输出结果:

Array
(
    [0] => Array
        (
            [tahun] => 2001
            [bulan] => 1
            [pembetulan] => 0
        )
    [1] => Array
        (
            [tahun] => 2002
            [bulan] => 1
            [pembetulan] => 1
        )
    [2] => Array
        (
            [tahun] => 2003
            [bulan] => 1
            [pembetulan] => 4
        )
    [3] => Array
        (
            [tahun] => 2003
            [bulan] => 2
            [pembetulan] => 0
        )
)

方法2:用array_reduce实现(PHP 5.3+支持)

如果偏好函数式写法,可以用array_reduce实现同样逻辑,代码更简洁:

$groupedMax = array_values(array_reduce($data, function($carry, $item) {
    $key = $item['tahun'] . '_' . $item['bulan'];
    if (!isset($carry[$key]) || $item['pembetulan'] > $carry[$key]['pembetulan']) {
        $carry[$key] = $item;
    }
    return $carry;
}, []));

两种实现逻辑完全一致,可根据代码风格选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:57:04