<?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
)
$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
)
aa|aad|adf,123|afas
ad|aad|adfa,13|afas
ba|aad|aaaaafs,23|afas
aa|aad|afafa,12|afas
aa|aad|afaf,1|afas
aa|aad|adfadf,2|afas
……
这个怎么排?
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函数决定的
$a1 = explode("|",$a);
$b1 = explode("|",$b);
$a2 = explode(",",$a1[2]);
$b2 = explode(",",$b1[2]);
if($a2[1] == $b2[1])
return 0;
return ($a2[2]>$b2[2])?1:-1;
}
可不可以?
它只不过是从文件下面的多个文件里面获取数据罢了!
格式跟你要求的也是一样的。
<?
if (empty($sorted)) $sorted="musicname";
if (empty($dir)) $dir=1;
?><HTML><HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<TITLE>歌曲列表</TITLE>
<style TYPE="text/css">
<!--
body,td{ font-family: "宋体"; line-height: 12pt; font-size: 9pt}
a{TEXT-DECORATION: none;}
-->
</style>
</HEAD>
<BODY>
<script language="javascript">
sorted="<?echo $sorted;?>";
dir=parseInt("<?echo $dir;?>");function sortby(obj){
sorted==obj.ename ? mydir=-dir : mydir=dir;
obj.href=location.pathname+"?sorted="+obj.ename+"&dir="+mydir;
}
function tips(obj){
sorted==obj.ename ? mydir=-dir:mydir=dir;
obj.href="sortby: 按["+obj.chname+"]["+ (mydir>0?"降序":"升序") +"]排列";
obj.title="按["+obj.chname+"]["+ (mydir>0?"降序":"升序") +"]排列";
}
</script>
<TABLE align=center bgColor="#0099CC" border=0 cellPadding=0 cellSpacing=0 width=500>
<TBODY>
<TR>
<TD height="20" align="center" background="img/tbg.gif" bgColor=#799ADD><font color="#FFFFFF">歌曲列表</font></TD>
</TR>
<TR>
<TD> <TABLE border=0 cellPadding=1 cellSpacing=1 width="100%">
<TBODY>
<TR bgColor=#becfed>
<?
$sortdownsrc="img/sortdown.gif";
$sortupsrc="img/sortup.gif"; function printtitle(){ #标题链接和输出图片
global $ename,$sorted,$dir,$sortdownsrc,$sortupsrc,$chname;
echo "<a href='#' onmouseover='tips(this)' onmousedown='sortby(this)' chname='$chname' ename='$ename'><font color='#0000FF'>$chname</font></a>";
if($sorted==$ename){
echo "<img src='". ($dir>0?$sortdownsrc:$sortupsrc) ."'>";
}
}
?>
<? $ename="musicname"; $chname="歌曲名称"; ?> <TD align=center> <? printtitle(); ?></TD>
<? $ename="singer"; $chname="歌手"; ?> <TD align=center> <? printtitle(); ?></TD>
<? $ename="musicsize"; $chname="大小"; ?> <TD align=center> <? printtitle(); ?></TD>
<?
$i=1;
$open=opendir("data/");
while ($filename=readdir($open)) {
if (filesize("data/".$filename)>0){
$filecontent=file("data/".$filename);
$msgs_info=explode("|",$filecontent[0]);
$musicname=$msgs_info[0];
$singer=$msgs_info[1];
$musicsize=$msgs_info[2];
//把要排序的类的值读到$sort_array[]中以便排序
$sort_array[$i]=$$sorted;
$filename_array[$i]=$filename;
$i++;
}
}
$totalfile=count($sort_array);if($totalfile!=0){
$dir>0 ? asort($sort_array) : arsort($sort_array); $i=1;
for(reset($sort_array); $key = key($sort_array); next($sort_array)) {
//令 $key_array[] 为排好的数组下标
$key_array[$i] = $key;
$i++;
}
for ($i=1;$i<=$totalfile;$i++){
$filecontent=file("data/".$filename_array[$key_array[$i]]);
$msgs_info=explode("|",$filecontent[0]);
$musicname=$msgs_info[0];
$singer=$msgs_info[1];
$musicsize=$msgs_info[2];
echo "<TR bgColor=#ebf1f7> \n";
echo "<td align=left> $musicname</td> \n";
echo "<td align=left> $singer</td> \n";
echo "<td align=left> $musicsize KB</td> \n";
echo "</TR> \n";
}
}
closedir($open);
?> </TR>
</TBODY>
</TABLE></TD>
</TR>
</TBODY>
</TABLE>
</BODY>
</HTML>