问:怎样将一个数组按照每一行的第三个“|”后的数字的大小进行排列?

该数组结构为:
aa &brvbaraad &brvbar123 &brvbarafas
aa &brvbaraad &brvbar13 &brvbarafas
aa &brvbaraad &brvbar23 &brvbarafas
aa &brvbaraad &brvbar12 &brvbarafas
aa &brvbaraad &brvbar1 &brvbarafas
aa &brvbaraad &brvbar2 &brvbarafas
……
---------------------------------------------------------------

 1   
 2$ar = array(   
 3"aa &brvbaraad &brvbar123 &brvbarafas",   
 4"aa &brvbaraad &brvbar13 &brvbarafas",   
 5"aa &brvbaraad &brvbar23 &brvbarafas",   
 6"aa &brvbaraad &brvbar12 &brvbarafas",   
 7"aa &brvbaraad &brvbar1 &brvbarafas",   
 8"aa &brvbaraad &brvbar2 &brvbarafas"   
 9);   
10function cmd($a,$b) {   
11$a1 = explode(" ¦",$a);   
12$b1 = explode(" ¦",$b);   
13if($a1[2] == $b1[2])   
14return 0;   
15return ($a1[2]>$b1[2])?1:-1;   
16}   
17usort($ar,cmd);   

结果
Array
(
[0] => aa &brvbaraad &brvbar1 &brvbarafas
[1] => aa &brvbaraad &brvbar2 &brvbarafas
[2] => aa &brvbaraad &brvbar12 &brvbarafas
[3] => aa &brvbaraad &brvbar13 &brvbarafas
[4] => aa &brvbaraad &brvbar23 &brvbarafas
[5] => aa &brvbaraad &brvbar123 &brvbarafas
)

---------------------------------------------------------------

回调函数改成:
function cmd($a,$b) {
$a1 = split("[ ¦,]",$a);
$b1 = split("[ ¦,]",$b);
if($a1[3] == $b1[3])
return 0;
return ($a1[2]>$b1[2])?1:-1;
}

至于排序后数组的变化是由usort函数决定的

Published At
Categories with Web编程
comments powered by Disqus