- 论坛徽章:
- 0
|
看了一段代码。没有明白USORT是如何排定数组的中元素位置的。
<html>
<head>
<title>对数组自定义排序函数使用实例</title>
</head>
<body>
<?
$temp=array("班长","无职务","副班长","团支书","无职务","副班长"); //定义数组$temp
function cmp($a,$b) //自定义排序函数
{
if($a=="团支书") //第一个参数为团支书的情况
{
if($b=="团支书")
return 0;
elseif($b=="班长")
return -1;
elseif($b=="副班长")
return -1;
else
return -1;
}
elseif($a=="班长") //第一个参数为班长的情况
{
if($b=="团支书")
return 1;
else if($b=="班长")
return 0;
else if($b=="副班长")
return -1;
else
return -1;
}
elseif($a=="副班长") //第一个参数为副班长的情况
{
if($b=="团支书")
return 1;
else if($b=="班长")
return 1;
else if($b=="副班长")
return 0;
else
return -1;
}
else //第一个参数为无职务的情况
{
if($b=="团支书")
return 1;
else if($b=="班长")
return 1;
else if($b=="副班长")
return 1;
else
return 0;
}
} //根据不同情况返回不同的值
echo "数组temp原始顺序为:";
echo "<p>";
for($i=0;$i<count($temp);$i++) //通过循环打印原始数组
{
echo $temp[$i].",";
}
usort($temp,"cmp"); //对数组进行usort处理
echo "<p>";
echo "数组temp经过usort处理过的顺序为;";
echo "<p>";
for($i=0;$i<count($temp);$i++) //通过循环打印处理过的数组
{
echo $temp[$i].",";
}
?>
</body>
</html>
当调用函数CMP时,通过各种情况的比较后,函数会返回 0 ,-1 ,1 三个不同的值。之后USORT是如何处理这个结里呢?想了好久不解其中的原因?
[ 本帖最后由 wwl 于 2008-5-30 10:56 编辑 ] |
|