php数组降序,给关联数组按照值排序的方法
分类:微服架构

本文实例讲述了php通过asort()给关联数组按照值排序的方法。分享给大家供大家参考。具体分析如下:

php数组排序

  • sort() - 以升序对数组排序
  • rsort() - 以降序对数组排序
  • asort() - 根据值,以升序对关联数组进行排序
  • arsort() - 根据值,以降序对关联数组进行排序
  • ksort() - 根据键,以升序对关联数组进行排序
  • krsort() - 根据键,以降序对关联数组进行排序

以sort为例

<?php 
$colors = array("red" => "b1","green" => "c2","blue" => "d3","yellow" => "a4"); 
var_dump($colors);
sort($colors);
var_dump($colors);
?>

执行结果如下

array(4) {
  ["red"]=>
  string(2) "b1"
  ["green"]=>
  string(2) "c2"
  ["blue"]=>
  string(2) "d3"
  ["yellow"]=>
  string(2) "a4"
}
array(4) {
  [0]=>
  string(2) "a4"
  [1]=>
  string(2) "b1"
  [2]=>
  string(2) "c2"
  [3]=>
  string(2) "d3"
}

即 sort和rsort在进行数组排序时根据数组的value,按照字母表a~z的顺序进行排序 ,排序后的数组的key值会强制变为0,1,2,3... ,原数组value不全为字母时,sort以及rsort会从第一位开始往后寻找字母进行排序,如若原数组的value不含a~z 如下

<?php 
$colors = array("red" => "4","green" => "2","blue" => "3","yellow" => "1"); 
var_dump($colors);
sort($colors);
var_dump($colors);
?>

执行结果

array(4) {
  ["red"]=>
  string(1) "4"
  ["green"]=>
  string(1) "2"
  ["blue"]=>
  string(1) "3"
  ["yellow"]=>
  string(1) "1"
}
array(4) {
  [0]=>
  string(1) "1"
  [1]=>
  string(1) "2"
  [2]=>
  string(1) "3"
  [3]=>
  string(1) "4"
}

sort和rsort会按照数字的大小进行排序 key值也会强制转换成0,1,2,3.....

asort和arsort
根据value进行升序/降序,看起来跟sort和rsort一样,但是sort和rsort的排序会重置原先的key值,变成0,1,2,3...,而asort和arsort并不会 其他规则一样 如下

<?php 
$colors = array("red" => "4","green" => "2","blue" => "3","yellow" => "1"); 
var_dump($colors);
asort($colors);
var_dump($colors);
?>

执行结果

array(4) {
  ["red"]=>
  string(1) "4"
  ["green"]=>
  string(1) "2"
  ["blue"]=>
  string(1) "3"
  ["yellow"]=>
  string(1) "1"
}
array(4) {
  ["yellow"]=>
  string(1) "1"
  ["green"]=>
  string(1) "2"
  ["blue"]=>
  string(1) "3"
  ["red"]=>
  string(1) "4"
}

ksort以及krsrot示例

<?php 
$colors = array("red" => "4","green" => "2","blue" => "3","yellow" => "1"); 
var_dump($colors);
ksort($colors);
var_dump($colors);
?>

执行结果

array(4) {
  ["red"]=>
  string(1) "4"
  ["green"]=>
  string(1) "2"
  ["blue"]=>
  string(1) "3"
  ["yellow"]=>
  string(1) "1"
}
array(4) {
  ["blue"]=>
  string(1) "3"
  ["green"]=>
  string(1) "2"
  ["red"]=>
  string(1) "4"
  ["yellow"]=>
  string(1) "1"
}

<?php
$people=array('name','sex','nation','birth');
foreach ($people as $mychrs)
  echo $mychrs." ";
sort($people);
echo "<br />---排序后---<br />";
foreach ($people as $mychrs)
  echo $mychrs." ";
?>

php通过asort()给关联数组按照值排序,和sort的区别是,sort为数组中的单元赋予新的键名。原有的键名将被删除。

升序排序后的数组元素显示为 birth name nation sex,当然,sort()函数是区分字母大小写的(字母从大到小的顺序是:a…z…a…z)

$nums = array("one"=>5,"two"=>2,"three"=>1);
asort( $nums );
foreach ( $nums as $key => $val ) {
 print "$key = $val
";
}

  sort()函数还具有第二参数,用来说明升序的规则是用来比较数字还是字符串的

希望本文所述对大家的php程序设计有所帮助。

 

<?php
echo "---按数字升序排序---<br />";
$num2=array('26','3',);
sort($num2,sort_numeric);
foreach ($num2 as $mychrs)
  echo $mychrs." ";
echo "<br />---按字符升序排序---<br />";
$num3=array('26','3');
sort($num3,sort_string);
foreach ($num3 as $mychrs)
  echo $mychrs." ";
?>

php中关联数组的排序

  php除了支持数字索引数组以外,还支持相关数组。比如如下数组就是一个相关(关联)数组:

$peoples=array('xm'=>'name','xb'=>'sex','mz'=>'nation','cs'=>'birth');

  使用sort($peoples)默认即是按照元素定义值的升序排序,在关联数组中可使用asort()函数表示,关联数组中最主要的则是可按照关键字(如xm、xb、mz等)的升序排序,该方法是用函数ksort()函数。

<?php
$peoples=array('xm'=>'name','xb'=>'sex','mz'=>'nation','cs'=>'birth');
foreach ($peoples as $mychrs)
  echo $mychrs." ";
echo "<br />--按元素值升序排列--<br />";
asort($peoples);
foreach ($peoples as $mychrs)
  echo $mychrs." ";
echo "<br />--按关键字升序排列--<br />";
ksort($peoples);
foreach ($peoples as $mychrs)
  echo $mychrs." ";
?>

本文由10bet手机官网发布于微服架构,转载请注明出处:php数组降序,给关联数组按照值排序的方法

上一篇:php通过array 下一篇:php对数组排序代码,PHP排序函数sort
猜你喜欢
热门排行
精彩图文