查看完整版本: 怎样将一个数组按照每一行的第三个“|”后的数字的大小进行排列?

ghmc 2006-4-25 13:48

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

该数组结构为:  
aa  ¦aad  ¦123  ¦afas  
aa  ¦aad  ¦13  ¦afas  
aa  ¦aad  ¦23  ¦afas  
aa  ¦aad  ¦12  ¦afas  
aa  ¦aad  ¦1  ¦afas  
aa  ¦aad  ¦2  ¦afas  
……

诡异 2006-4-25 13:49

<?php  
$ar  =  array(  
"aa  &brvbar;aad  &brvbar;123  &brvbar;afas",  
"aa  &brvbar;aad  &brvbar;13  &brvbar;afas",  
"aa  &brvbar;aad  &brvbar;23  &brvbar;afas",  
"aa  &brvbar;aad  &brvbar;12  &brvbar;afas",  
"aa  &brvbar;aad  &brvbar;1  &brvbar;afas",  
"aa  &brvbar;aad  &brvbar;2  &brvbar;afas"  
);  
function  cmd($a,$b)  {  
   $a1  =  explode("  &brvbar;",$a);  
   $b1  =  explode("  &brvbar;",$b);  
   if($a1[2]  ==  $b1[2])  
       return  0;  
   return  ($a1[2]>$b1[2])?1:-1;  
}  
usort($ar,cmd);  
?>  
结果  
Array  
(  
       [0]  =>  aa  &brvbar;aad  &brvbar;1  &brvbar;afas  
       [1]  =>  aa  &brvbar;aad  &brvbar;2  &brvbar;afas  
       [2]  =>  aa  &brvbar;aad  &brvbar;12  &brvbar;afas  
       [3]  =>  aa  &brvbar;aad  &brvbar;13  &brvbar;afas  
       [4]  =>  aa  &brvbar;aad  &brvbar;23  &brvbar;afas  
       [5]  =>  aa  &brvbar;aad  &brvbar;123  &brvbar;afas  
)

海阔天空 2006-4-25 13:49

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

至于排序后数组的变化是由usort函数决定的
页: [1]
查看完整版本: 怎样将一个数组按照每一行的第三个“|”后的数字的大小进行排列?