寻找循环中的最大值

Finding the higest value in a loop

我正在尝试 return 数组中的最高百分比值以及名称、平均值、百分比、颜色等所有其他信息。

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

    return $percentage;
}

我如何实施解决方案以找到所需的值(最高百分比)和 return 如果是数组。我在想排序可能是一种方式,但我仍然不清楚我应该怎么做。

试试这个

$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;
}

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

例如:

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

如果你想使用内置的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]));