how to get top 3 values in php array and their index

后端 未结 5 810
醉梦人生
醉梦人生 2021-01-18 21:45

I want to get the highest value, the second highest value and the third highest value

For example, I have an array like:

$n = array(100,90,150,200,199,

相关标签:
5条回答
  • 2021-01-18 22:06

    This should do the trick:

    function maxNitems($array, $n = 3){
        asort($array);
        return array_slice(array_reverse($array, true),0,$n, true);
    }
    

    Use like:

    maxNitems(array(100,90,150,200,199,155,15,186));
    
    0 讨论(0)
  • 2021-01-18 22:14
    $n = array(100,90,150,200,199,155,15,186);
    arsort($n);
    
    $x = 0;
    while (++$x <= 3)
    {
        $key = key($n);
        $value = current($n);
        next($n);
        echo "Key : " . $key . " Value  : " . $value . '<br>' ;
    }
    
    0 讨论(0)
  • 2021-01-18 22:20

    Easier I would think:

    arsort($n);
    $three = array_chunk($n, 3, true)[0];
    //or
    $three = array_slice($n, 0, 3, true);
    
    0 讨论(0)
  • 2021-01-18 22:22

    You can achieve it by using arsort() and array_keys() functions:

    • arsort() sorts an array in reverse order and maintains index association
    • array_keys() returns all the keys or a subset of the keys of an array

    Process array:

    $n = array(100,90,150,200,199,155,15,186);
    arsort($n);
    $keys = array_keys($n);
    

    Get top 3 values:

    echo $n[$keys[0]];
    echo $n[$keys[1]];
    echo $n[$keys[2]];
    
    0 讨论(0)
  • 2021-01-18 22:26

    Try this:

    $n = array(100,90,150,200,199,155,15,186);
    rsort($n);
    $top3 = array_slice($n, 0, 3);
    echo 'Values: ';
    foreach ($top3 as $key => $val) {
     echo "$val\n";
    }
    echo '<br>';
    echo 'Keys: ';
    foreach ($top3 as $key => $val) {
    echo "$key\n";
    }
    

    Output:

    Values: 200 199 186 
    Keys: 0 1 2
    
    0 讨论(0)
提交回复
热议问题