Board logo

标题: 怎样将一个数组按照每一行的第三个“|”后的数字的大小进行排列? [打印本页]

作者: 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  ¦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  
)
作者: 海阔天空    时间: 2006-4-25 13:49

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




欢迎光临 编程开发论坛 (http://bbs.lihuasoft.net/) Powered by Discuz! 6.0.0