如何在特定条件下提取数组中的最高和最低值?

时间:2018-06-22 20:12:29

标签: php

假设我在数组中有这种情况:

[0] => 4 - 0
[1] => 0 - 1
[2] => 2 - 2
[3] => 1 - 2
[4] => 0 - 0

该值被组织为home团队的第一列,而最后一行为away团队的最后一列,因此主队赢得4 - 0的第一行。

现在,我正在尝试提取在这种情况下为4 - 0的“最大胜利”和为0 - 1的“最大失败”。

我现在尝试的是遍历数组索引:

$biggestVictory = array_fill(0, 2, 0);
$biggestDefeat = array_fill(0, 2, 0);

foreach ($results as $result)
{
    $score = explode("-", $result);
    $home = $score[0];
    $away = $score[1];

    if($home > $biggestVictory[0] && $away <= $biggestVictory[1])
    {
        $biggestVictory[0] = $home;
        $biggestVictory[1] = $away;
    }

    if($away > $biggestDefeat [1] && $home <= $biggestDefeat [0])
    {
        $biggestDefeat [1] = $home;
        $biggestDefeat [2] = $away;
    }
}

对于biggestVictory,结果将返回4-0,对于0 - 0,结果将返回biggestDefeat,为什么?

2 个答案:

答案 0 :(得分:0)

对于“最大的胜利”到底是什么,我还不清楚。得分差异最大,还是进球最多?假设差异是重要的,此代码应能解决问题:

$biggestVictory = array_fill(0, 2, 0);
$biggestDefeat = array_fill(0, 2, 0);

foreach ($results as $result)
{
    $score = explode("-", $result);
    $home = $score[0];
    $away = $score[1];

    if( ($home - $away) >= ($biggestVictory[0] - $biggestVictory[1]) )
    {
        $biggestVictory[0] = $home;
        $biggestVictory[1] = $away;
    }

    if( ($away - $home) >= ($biggestDefeat[1] - $biggestDefeat[0]) )
    {
        $biggestDefeat [0] = $home;
        $biggestDefeat [1] = $away;
    //look at the index ^ you had a mistake in here
    }
}

请注意,您的条件if($home > $biggestVictory[0] && $away <= $biggestVictory[1])非常糟糕,因为由于条件的第二部分,100 - 1不会替代1 - 0

答案 1 :(得分:0)

您可以使用Max Function在数组中查找最大值

  

max()函数返回数组中的最大值或最大值   几个指定值的值。

<?php
echo(max(2,4,6,8,10) . "<br>");
echo(max(22,14,68,18,15) . "<br>");
echo(max(array(4,6,8,10)) . "<br>");
echo(max(array(44,16,81,12)));
?>

您还可以使用mini Function在数组中查找最小值

  

min()函数返回数组中的最小值或最小值   几个指定值的值。

<?php
echo(min(2,4,6,8,10) . "<br>");
echo(min(22,14,68,18,15) . "<br>");
echo(min(array(4,6,8,10)) . "<br>");
echo(min(array(44,16,81,12)));
?>