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

PHP:如何从多维关联数组中获取最大值对应的键?

如何获取多维数组中最大值对应的元素键?

你遇到的问题根源很清晰:array_keys()在这里无法生效,是因为你的articles数组里的每个元素都是独立的关联数组,而max(array_column(...))得到的是单个数值(比如25)。array_keys()会去查找数组中值完全等于这个数值的键,但你的数组元素都是数组类型,自然找不到匹配项,所以返回空数组。

下面给你两种无需手动遍历收集值的简洁实现方法:

方法一:用array_reduce跟踪最大值与对应键

这个方法可以在一次遍历中完成最大值和对应键的查找,逻辑清晰且高效:

foreach($resultCache as $s => $r){
    $maxInfo = array_reduce($r['articles'], function($carry, $item, $key) {
        // 初始状态或当前元素值更大时,更新记录的键和值
        if ($carry === null || $item['shipping_costs_total'] > $carry['value']) {
            return ['key' => $key, 'value' => $item['shipping_costs_total']];
        }
        return $carry;
    });
    // 最终$maxInfo['key']就是你要的目标键(示例中为0)
    echo "当前分组下最大值对应的键:" . $maxInfo['key'];
}

如果存在多个元素的shipping_costs_total等于最大值,这个方法会返回最后一个遇到的最大值的键,你可以把比较符号改成>=来调整为返回第一个。

这个方法更简洁,利用array_column保留原数组键的特性:

foreach($resultCache as $s => $r){
    // 提取所有shipping_costs_total值,同时保留原数组的键
    $shippingCosts = array_column($r['articles'], 'shipping_costs_total');
    // 获取最大值
    $maxValue = max($shippingCosts);
    // 查找最大值对应的第一个键
    $maxKey = array_search($maxValue, $shippingCosts);
    echo "当前分组下最大值对应的键:" . $maxKey;
}

注意:如果有多个相同的最大值,array_search只会返回第一个匹配的键,这是它的默认行为。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:47:05