PHP 二维数组排序
用到二维数组排序,到手册里面查了下,有这样一个很不错的函数,和数据库里面的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);
foreach($result as $k=>$v){
$sort_arr[$k] = $v['seeCnt'];
$ifOptimal_arr[$k] = $v['ifOptimal'];
$createTime_arr[$k] = $v['createTime'];
}
array_multisort($ifOptimal_arr,
SORT_DESC,$createTime_arr,SORT_DESC,$result);
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
$deed_id[]=$t_v['deed_id'];
$total[]=$t_v['total'];
//print_r($t_v);
}
array_multisort($deed_id,
print_r($XML_deed_temp);