管理博客 ┆ 搜索 ┆ 帮助
usort 排序函数
作者:眉若轻烟 2008-04-09 22:48:05
标签:
 
 usort --  使用用户自定义的比较函数对数组中的值进行排序

说明

void usort ( array array, callback cmp_function)
 

usort的回调函数cmd接受两个参数,这两个参数由usort内部提供
回调函数可能的返回值是
0 不做操作
-1 将$a所在单元先前移动
1 将$b所在单元先前移动

也就是说当$a>$b时,返回1,就是做升序排列;返回-1,就是做降序排列


<?php
function cmp ($a, $b) {
    if (
$a == $b) return 0;
    return (
$a < $b) ? -1 : 1;
}

$a = array (3, 2, 5, 6, 1);

usort ($a, "cmp");

while (list (
$key, $value) = each ($a)) {
    echo
"$key: $value\n";
}
?>

本例将显示:

0: 1
1: 2
2: 3
3: 5
4: 6
使用对象的成员函数的 usort() 例子
<?php
class TestObj {
    var
$name;

    function
TestObj($name)
    {
        
$this->name = $name;
    }

    

    
function cmp_obj($a, $b)
    {
        
$al = strtolower($a->name);
        
$bl = strtolower($b->name);
        if (
$al == $bl) return 0;
        return (
$al > $bl) ? +1 : -1;
    }
}

$a[] = new TestObj("c");
$a[] = new TestObj("b");
$a[] = new TestObj("d");

usort($a, array ("TestObj", "cmp_obj"));

foreach (
$a as $item) {
    print
$item->name."\n";
}
?>

本例将显示:

b
c
d
本文仅为提供更多信息,不代表新浪BLOG同意其观点或描述。如需转载请注明出处。