首页 > 生活随笔 > php 二维数组排序

php 二维数组排序

2009年10月3日

用到二维数组排序,到手册里面查了下,有这样一个很不错的函数,和数据库里面的order by功能是一样的,把二位数组当成一个数据库的表。数组的key就相当于标的列,数组的value相当于标的行:
$XML_deed_temp=array(
array(’deed_id’=>1,’total’=>’b101′),
array(’deed_id’=>2,’total’=>’3′),
array(’deed_id’=>2,’total’=>’4′),
array(’deed_id’=>5,’total’=>’a5′),
array(’deed_id’=>8,’total’=>’a8′),
array(’deed_id’=>12,’total’=>’a12′),
array(’deed_id’=>11,’total’=>’a11′),
array(’deed_id’=>6,’total’=>’a6′)
);

上面的数组可以看成如下一个数据库表:
deed_id total
—————————-
1 b101
2 3
2 4
5 a5
8 a8
12 a12
11 a11
6 a6
——————————-
排序的时候先要取出其中的一列,然后就可以这样:
array_multisort($sortdeed,, SORT_ASC, $XML_deed_temp);
$XML_deed_temp就是要排序的数组,$sortdeed,就是要排序的列的数组(这个数组要先foreach $XML_deed_temp然后将deed_id那一列取出放到$sortdeed数组里面),如果要实现order by col1,col2这样的,可以把多个列取出进行排序,排序先按col1排,再按col2排

$XML_deed_temp=array(
array(deed_id=>1,total=>b101),
array(deed_id=>2,total=>3),
array(deed_id=>2,total=>4),
array(deed_id=>5,total=>a5),
array(deed_id=>8,total=>a8),
array(deed_id=>12,total=>a12),
array(deed_id=>11,total=>a11),
array(deed_id=>6,total=>a6)
);
foreach($XML_deed_temp as $t_k=>$t_v){
$deed_id[]=$t_v['deed_id'];
$total[]=$t_v['total'];
//print_r($t_v);
}
array_multisort($deed_id, SORT_ASC, $total, SORT_ASC, $XML_deed_temp);
print_r($XML_deed_temp);
 

haierspi 生活随笔 ,

本文URL:http://blog.diybeta.com/?p=148
  1. 2010年8月16日16:54 | #1

    1WEwf7 Vgkce cjueuefip fslafz uvanhjbjv sugroapimx qrkgtombwx ugfycg xvuyztx.

  2. 2010年8月5日00:21 | #2

    bauHQT Yjramcx upyf bgboswudmn toxi lphngs vurleh srftl hhtbemj.

  1. 目前还没有任何 trackbacks 和 pingbacks.