(PHP 4, PHP 5)
usort — آرایه را با توجه به مقادیر با استفاده از تابع مقایسه تعریف شده توسط کاربر مرتب کن
این تابع آرایه را با توجه به مقادیر با استفاده از تابع مقایسه فراهم شده توسط کاربر مرتب خواهد نمود. اگر آرایه مورد نظر شما باید براساس یک معیار غیر بدیهی مرتب شود از این تابع باید استفاده کنید.
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.
آرایه ورودی.
تابع مقایسه یک عدد صحیح کوچکتر، مساوی، یا بزرگتر از صفر بازمیگرداند اگر اولین آرگومان به ترتیب کوچکتر، مساوی با، یا بزرگتر از دومین آرگومان است.
Returns TRUE on success or FALSE on failure.
Version | Description |
---|---|
4.1.0 | یک الگوریتم جدید مرتبسازی معرفی شد. cmp_function ترتیب اصلی را برای اعضای مقایسه شده برابر حفظ نمیکند. |
Example #1 مثال usort()
<?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");
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 : -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