发新话题
打印

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

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

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

TOP

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

TOP

回调函数改成:  
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函数决定的

TOP

发新话题