假设我在数组中有这种情况:
[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
,为什么?
答案 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)));
?>