Функции за работа с масиви
PHP Manual

usort

(PHP 4, PHP 5)

usortСортира масив по стойностите, използвайки потребителска функция за сравнение

Описание

bool usort ( array &$array , callback $cmp_function )

Тази функция ще сортира масив на базата на стойностите му, използвайки потребителска функция за сравнение. Ако масивът, който искате да сортирате, трябва да се сортира по някакъв необикновен критерий, можете да използвате тази функция.

Забележка: Ако при сравняването тези стойности излязат равни, редът им в сортирания масив ще бъде недефиниран.

Забележка: Тази функция задава нови ключове за елементите на array . Тя няма просто да преподреди ключовете, а ще премахне всички съществуващи ключове, които са били присвоени.

Параметри

array

Входният масив.

cmp_function

Функцията за сравнение трябва да връща цяло число - по-малко, равно или по-голямо от нула, ако първият аргумент е съответно - по-малък, равен или по-голям от втория.

Връщани стойности

Връща TRUE при успех или FALSE при неуспех.

Дневник на промените

Версия Описание
4.1.0 Създаден е нов алгоритъм за сортиране. Параметърът cmp_function вече не съхранява първоначалната последователност на елементите, които се приемат за еднакви.

Примери

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

Забележка: Очевидно при този тривиален случай е по-удачно да се използва функция 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() с метод на клас

<?php
class TestObj {
    var 
$name;

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

    
/* Това е статичната функция за сравняване: */
    
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

Вж. също


Функции за работа с масиви
PHP Manual