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

如何在PHP关联数组中获取每个角色的最高属性

获取PHP关联数组中每个角色的最高属性

原数组定义

$characters = [
    "Character1" => ["Strength" => 1, "Dexterity" => 2, "Intelligence" => 6, "Wisdom" => 6, "Charisma" => 3],
    "Character2" => ["Strength" => 5, "Dexterity" => 4, "Intelligence" => 1, "Wisdom" => 1, "Charisma" => 6],
    "Character3" => ["Strength" => 6, "Dexterity" => 5, "Intelligence" => 5, "Wisdom" => 1, "Charisma" => 5],
    "Character4" => ["Strength" => 1, "Dexterity" => 2, "Intelligence" => 4, "Wisdom" => 3, "Charisma" => 3]
];

需求说明

需要获取每个角色的最高属性(支持多个属性数值相同且为最大值的情况,比如Character1的Intelligence和Wisdom均为最高值6),并输出角色名称、最高属性名称及其对应数值。

尝试过的代码及问题

代码1:逻辑错误

foreach($attributs as $s_key => $value)
{   
    if($value > $max)
        $max = max($attributs);
        $maxkey = $s_key;
}
echo "<li>$max , $maxkey</li>";
echo "</ul>";

这段代码未正确初始化$max变量,且条件判断未用大括号包裹多行逻辑,导致$maxkey会被每次循环覆盖,最终无法正确定位最高属性。

代码2:仅能获取数值

foreach($characters as $names => $quality){
    echo "$names"; 
    echo max($quality);
}

这段代码只能输出角色名称和最高属性的数值,无法获取对应的属性名称,不符合需求。

正确实现方法

核心思路:遍历每个角色,先获取该角色属性的最大值,再筛选出所有数值等于最大值的属性,最后输出结果。

完整代码:

// 遍历每个角色
foreach ($characters as $characterName => $attributes) {
    // 获取当前角色的属性最大值
    $maxValue = max($attributes);
    // 筛选出所有数值等于最大值的属性
    $maxAttributes = array_filter($attributes, function($value) use ($maxValue) {
        return $value === $maxValue;
    });

    // 输出角色名称及对应最高属性
    echo "<h3>$characterName</h3>";
    echo "<ul>";
    foreach ($maxAttributes as $attrName => $attrValue) {
        echo "<li>最高属性:$attrName,数值:$attrValue</li>";
    }
    echo "</ul>";
}

代码解释

  1. 外层foreach遍历角色数组,拿到每个角色的名称和属性列表。
  2. max($attributes)快速获取当前角色的属性最大值。
  3. array_filter结合匿名函数,筛选出所有数值等于最大值的属性,支持多个最高属性的场景。
  4. 内层foreach遍历筛选后的属性,逐个输出属性名称和数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 03:10:25