Array Functions
PHP Manual

usort

(PHP 4, PHP 5)

usortآرایه را با توجه به مقادیر با استفاده از تابع مقایسه تعریف شده توسط کاربر مرتب کن

Description

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

این تابع آرایه را با توجه به مقادیر با استفاده از تابع مقایسه فراهم شده توسط کاربر مرتب خواهد نمود. اگر آرایه مورد نظر شما باید براساس یک معیار غیر بدیهی مرتب شود از این تابع باید استفاده کنید.

Note:

اگر دو عضو برابر با یکدیگر باشند، ترتیب آنها در آرایه مرتب شده نامشخص خواهد بود.

Note: This function assigns new keys to the elements in array. It will remove any existing keys that may have been assigned, rather than just reordering the keys.

Parameters

array

آرایه ورودی.

cmp_function

تابع مقایسه یک عدد صحیح کوچکتر، مساوی، یا بزرگتر از صفر بازمی‌گرداند اگر اولین آرگومان به ترتیب کوچک‌تر، مساوی با، یا بزرگتر از دومین آرگومان است.

Return Values

Returns TRUE on success or FALSE on failure.

Changelog

Version Description
4.1.0 یک الگوریتم جدید مرتب‌سازی معرفی شد. cmp_function ترتیب اصلی را برای اعضای مقایسه شده برابر حفظ نمی‌کند.

Examples

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";
}
?>

The above example will output:

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 ارجاع به اولین اندیس آرایه را نگه دارید.

The above example will output:

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

Example #3 مثال usort() با استفاده از یک تابع عضو یک شی

<?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";
}
?>

The above example will output:

b
c
d

See Also


Array Functions
PHP Manual