usort

(PHP 4, PHP 5, PHP 7)

usort ʹ���û��Զ���ıȽϺ����������е�ֵ��������

˵��

usort ( array &$array , callable $value_compare_func ) : bool

�����������û��Զ���ıȽϺ�����һ�������е�ֵ�������� ���Ҫ�����������Ҫ��һ�ֲ�Ѱ���ı�׼����������ôӦ��ʹ�ô˺�����

Note:

If two members compare as equal, their relative order in the sorted array is undefined.

Note: �˺���Ϊ array �е�Ԫ�ظ����µļ������⽫ɾ��ԭ�еļ����������ǽ�����������������

����

array

���������

cmp_function

�ڵ�һ������С�ڣ����ڻ���ڵڶ�������ʱ���ñȽϺ���������Ӧ�ط���һ��С�ڣ����ڻ���� 0 ��������

callback ( mixed $a, mixed $b ) : int
Caution

Returning non-integer values from the comparison function, such as float, will result in an internal cast to integer of the callback's return value. So values such as 0.99 and 0.1 will both be cast to an integer value of 0, which will compare such values as equal.

����ֵ

�ɹ�ʱ���� TRUE�� ������ʧ��ʱ���� FALSE��

����

Example #1 usort() ����

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

$a = array(32561);

usort($a"cmp");

foreach (
$a as $key => $value) {
    echo 
"$key$value\n";
}
?>

�������̻������

0: 1
1: 2
2: 3
3: 5
4: 6

Note:

�����������С�������� sort() ���������ʡ�

Example #2 ʹ�ö�ά����� usort() ����

<?php
function cmp($a$b)
{
    return 
strcmp($a["fruit"], $b["fruit"]);
}

$fruits[0]["fruit"] = "lemons";
$fruits[1]["fruit"] = "apples";
$fruits[2]["fruit"] = "grapes";

usort($fruits"cmp");

while (list(
$key$value) = each($fruits)) {
    echo 
"$fruits[$key]: " $value["fruit"] . "\n";
}
?>

�������ά����ʱ��$a �� $b �����������һ�����������á�

�������̻������

$fruits[0]: apples
$fruits[1]: grapes
$fruits[2]: lemons

Example #3 usort() example using a member function of an object

<?php
class TestObj {
    var 
$name;

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

    
/* This is the static comparing function: */
    
static function cmp_obj($a$b)
    {
        
$al strtolower($a->name);
        
$bl strtolower($b->name);
        if (
$al == $bl) {
            return 
0;
        }
        return (
$al $bl) ? +: -1;
    }
}

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

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

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

�������̻������

b
c
d

Example #4 usort() example using a closure to sort a multi-dimensional array

<?php
$array
[0] = array('key_a' => 'z''key_b' => 'c');
$array[1] = array('key_a' => 'x''key_b' => 'b');
$array[2] = array('key_a' => 'y''key_b' => 'a');

function 
build_sorter($key) {
    return function (
$a$b) use ($key) {
        return 
strnatcmp($a[$key], $b[$key]);
    };
}

usort($arraybuild_sorter('key_b'));

foreach (
$array as $item) {
    echo 
$item['key_a'] . ', ' $item['key_b'] . "\n";
}
?>

�������̻������

y, a
x, b
z, c

�μ�