对 php 中的整数值进行排序
Sorting integer value in php
我在 php 文件中有 19 个变量。
$a = 20;
$b = 23;
$c = 2;
$d = 92;
$e = 51;
$f = 27;
$g = 20;
$h = 20;
.....
.....
$s = 32;
我需要的是只显示前 5 个值。并且某些变量具有相似的值。在那种情况下,我只需要显示前 5 个值中的第一个值。
我对执行此操作一无所知。
在收到下面给出的一些反馈后,我使用了数组和分类
这是示例-
<?php
$fruits = array("a" => "32", "b" => "12", "c" => "19", "d" => "18");
asort($fruits);
foreach ($fruits as $key => $val) {
echo "$key = $val\n";
}
?>
输出如下所示:
b = 12 d = 18 c = 19 a = 32
我需要相反的结果。意思是,32、19、18、12.....
任何帮助。只是不知道确切的命令
最好将变量的值放入数组中,然后 运行
sort($arr);
(这是从低到高)。
rsort($arr);
从高到低排序。
http://php.net/manual/en/array.sorting.php
然后您可以在数组索引 0、1、2、3 和 4 处获取第一个值,这将是最大的数字。
所以:
$arr= array ($a,$b,$c, ....);
rsort($arr);
var_dump($arr); // gives the output.
$arr[0] // biggest number
$arr[4] // 5th biggest number.
它们需要是单独的变量吗?将值存储在数组中是更好的选择。因此,要么手动将所有变量放入数组中,要么将结构更改为更像:
$arr = array(
'a' = 20,
'b' = 23,
'c' = 2,
'd' = 92,
'e' = 51,
....
....
's' => 32
);
或类似的。然后使用sort()对数组进行排序:
sort($arr);
要获得前 5 名,请使用 array_slice():
$arr = array_slice($arr, 0, 5);
注意:根据所需结果,sort() 可能不是您的最佳选择。对于其他排序选项,请参阅手册:http://php.net/manual/en/array.sorting.php
$array=array();
for ($i=97;$i<=115;$i++){ //decimal char codes for a-s
$var =chr($i);
$array[]= $$var; //variable variable $a- $s
}
asort($array);
var_dump($array);
<?php
array_push($data,$a);
array_push($data,$b);
.
.
.
$sorted_array = usort($data, 'mysort');
$top5 = array_splice($sorted_array,5);
if(in_array($your_variable,$top5)){
return $top5[0];
}else {
return $top5;
}
function mysort($a,$b){
if ($a == $b) {
return 0;
}
return ($a < $b) ? 1 : -1;
}
?>
一个有趣的方法:
$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";
}
输出
92
51
27
23
20
我在 php 文件中有 19 个变量。
$a = 20;
$b = 23;
$c = 2;
$d = 92;
$e = 51;
$f = 27;
$g = 20;
$h = 20;
.....
.....
$s = 32;
我需要的是只显示前 5 个值。并且某些变量具有相似的值。在那种情况下,我只需要显示前 5 个值中的第一个值。
我对执行此操作一无所知。
在收到下面给出的一些反馈后,我使用了数组和分类 这是示例-
<?php
$fruits = array("a" => "32", "b" => "12", "c" => "19", "d" => "18");
asort($fruits);
foreach ($fruits as $key => $val) {
echo "$key = $val\n";
}
?>
输出如下所示:
b = 12 d = 18 c = 19 a = 32
我需要相反的结果。意思是,32、19、18、12.....
任何帮助。只是不知道确切的命令
最好将变量的值放入数组中,然后 运行
sort($arr);
(这是从低到高)。
rsort($arr);
从高到低排序。
http://php.net/manual/en/array.sorting.php
然后您可以在数组索引 0、1、2、3 和 4 处获取第一个值,这将是最大的数字。
所以:
$arr= array ($a,$b,$c, ....);
rsort($arr);
var_dump($arr); // gives the output.
$arr[0] // biggest number
$arr[4] // 5th biggest number.
它们需要是单独的变量吗?将值存储在数组中是更好的选择。因此,要么手动将所有变量放入数组中,要么将结构更改为更像:
$arr = array(
'a' = 20,
'b' = 23,
'c' = 2,
'd' = 92,
'e' = 51,
....
....
's' => 32
);
或类似的。然后使用sort()对数组进行排序:
sort($arr);
要获得前 5 名,请使用 array_slice():
$arr = array_slice($arr, 0, 5);
注意:根据所需结果,sort() 可能不是您的最佳选择。对于其他排序选项,请参阅手册:http://php.net/manual/en/array.sorting.php
$array=array();
for ($i=97;$i<=115;$i++){ //decimal char codes for a-s
$var =chr($i);
$array[]= $$var; //variable variable $a- $s
}
asort($array);
var_dump($array);
<?php
array_push($data,$a);
array_push($data,$b);
.
.
.
$sorted_array = usort($data, 'mysort');
$top5 = array_splice($sorted_array,5);
if(in_array($your_variable,$top5)){
return $top5[0];
}else {
return $top5;
}
function mysort($a,$b){
if ($a == $b) {
return 0;
}
return ($a < $b) ? 1 : -1;
}
?>
一个有趣的方法:
$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";
}
输出
92
51
27
23
20