【问题标题】:Getting only the highest value [duplicate]仅获得最高值[重复]
【发布时间】:2026-01-30 16:35:01
【问题描述】:

我有这个foreach循环,我只想获取并显示最大值为buildings的数组

这是我的循环

$this->TaTarVillages = array();
foreach ($this->GetTaTaRVillages() as $value) {
    $this->TaTarVillages[] = array(
        'id' => $value['id'],
        'player_id' => $value['player_id'],
        'player_name' => $value['player_name'],
        'village_name' => $value['village_name'],
        'alliance_id' => $value['alliance_id'],
        'alliance_name' => $value['alliance_name'],
        'buildings' => $this->getWonderLandLevel($value['buildings'])
    );
}

使用 PHP 7

【问题讨论】:

  • 你可能想用你正在使用的语言标记这个问题
  • 我使用php7作为编程语言
  • 如果最高平分怎么办?只保留第一个?您想潜在地保留所有具有最高值的行吗? Barmar 的方法见this answer

标签: php arrays loops foreach php-7


【解决方案1】:

如果您只需要最大的数组,则不需要数组。每次循环,检查当前值是否大于你目前得到的最大值,如果是则替换它。

$largestVillage = $this->GetTaTaRVillages();
$largestVillage['buildings'] = $this->getWonderLandLevel($largestVillage['buildings']);
foreach ($this->GetTaTaRVillages() as $value) {
    $buildings = $this->getWonderLandLevel($value['buildings']);
    if ($buildings > $largestVillage['buildings']) {
        $largestVillage = $value;
        $largestVillage['buildings'] = $huildings;
    }
}

【讨论】:

  • 我得到了正确的结果,但我有错误Notice: Undefined index: buildings in AuthController.php on line 52Notice: Undefined offset: 1 in AuthController.php on line 291getWonderLandLevel 函数function getWonderLandLevel($builds) { $b_arr = explode(',', $builds); $indx = 0; foreach ($b_arr as $b_str) { ++$indx; $b2 = explode(' ', $b_str); $itemId = $b2[0]; $level = $b2[1]; if ($itemId == 40) { return $level; } } return 0; }
  • 我调用getWonderLandLevel() 的方式与您的原始代码相同。我认为这是正确的。
  • 正确,没有任何错误,谢谢:)