Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sorting integer value in php [closed]

I have 19 variables in a php file.

$a = 20;
$b = 23;
$c = 2;
$d = 92;
$e = 51;
$f = 27;
$g = 20;
$h = 20;
.....
.....
$s = 32;

What i need, I need to show only top 5 value. And there is similar value for some variables. In that case, I need to show the first value only if it is in the top 5 value.

I am not having any clue on doing this.

After receiving some feedback given bellow, i have used array and asort Here is the example-

<?php
$fruits = array("a" => "32", "b" => "12", "c" => "19", "d" => "18");
asort($fruits);
foreach ($fruits as $key => $val) {
    echo "$key = $val\n";
}
?>

The output looks like this:

b = 12 d = 18 c = 19 a = 32 

I need the reverse result. Meaning, 32, 19, 18, 12.....

Any help. Just dont know the exact command

like image 791
Kalid Avatar asked Jan 06 '15 02:01

Kalid


2 Answers

This is best done by putting the values of the variables into an array and running

sort($arr); (this is from lowes to highest).

rsort($arr); sorts high to low. http://php.net/manual/en/array.sorting.php

Then you can get the first values at array-index 0,1,2,3 and 4 which will be the biggest numbers.

So:

$arr= array ($a,$b,$c, ....);
rsort($arr);
var_dump($arr); // gives the output.

$arr[0] // biggest number
$arr[4] // 5th biggest number.
like image 187
kaicarno Avatar answered Oct 01 '22 01:10

kaicarno


A funny way to do this:

$a = 20;
$b = 23;
$c = 2;
$d = 92;
$e = 51;
$f = 27;
$g = 20;
$h = 20;

$array = compact(range('a', 'h'));
rsort($array);

foreach(array_slice($array, 0, 5) as $top) {
    echo $top, "\n";
}

Output

92 
51 
27 
23 
20

Demo: http://3v4l.org/Wi8q7

like image 28
Federkun Avatar answered Oct 01 '22 00:10

Federkun