在循环中查找最高值

时间:2015-09-29 08:26:05

标签: php sorting logic

我正在尝试返回最高百分比值以及阵列中的所有其他信息,如名称,平均值,百分比,颜色等。

foreach ($array as $value) {  
    $name = getName($value);
    $average = getAverage($value);
    $percentage = getPercentage($value);
    $color = getColor($value);

    return $percentage;
}

如何实现解决方案以找到所需的值(最高百分比)并返回它如果是数组。我认为排序可以是一种方式,但我仍然不清楚我该怎么做。

3 个答案:

答案 0 :(得分:0)

试试这个

$percentage1=0;
$datas=array();
foreach ($array as $value) {

$name = getName($value);
$average = getAverage($value);
$percentage = getPercentage($value);
$color = getColor($value);

if($percentage>$percentage1)
{
    $percentage1=$percentage;
    $datas['name']=$name;
    $datas['average']=$average;
    $datas['percentage']=$percentage;
    $datas['color']=$color;
}
return $datas;
}

答案 1 :(得分:0)

虽然你问题中的代码没有任何意义,但如果数组中的所有值都是数字,你可以使用php max函数获得最高值。

例如:

<?php $highest_value = max($array); ?>

答案 2 :(得分:0)

如果您想使用buit-in PHP排序,可以使用usort()。它使用自定义函数对数组进行排序。

usort($array, function($a, $b){
    $percentage_a = getPercentage($a);
    $percentage_b = getPercentage($b);
    if($percentage_a === $percentage_b) {
        return 0;
    }
    return ($percentage_a > $percentage_b)? -1 : 1;
});
return array(
    "name" => getName($array[0]),
    "average" => getAverage($array[0]),
    "percentage" => getPercentage($array[0]),
    "color" = getColor($array[0]));

然后,您的数组首先按最高百分比排序。

如果您不想要匿名功能,您可以快速定义它并使用其名称调用usort:

function getMaxPercentage($a, $b){
    $percentage_a = getPercentage($a);
    $percentage_b = getPercentage($b);
    if($percentage_a === $percentage_b) {
        return 0;
    }
    return ($percentage_a > $percentage_b)? -1 : 1;
}
usort($array, 'getMaxPercentage');
return return array(
    "name" => getName($array[0]),
    "average" => getAverage($array[0]),
    "percentage" => getPercentage($array[0]),
    "color" = getColor($array[0]));