uksort (uksort)
می خواهی بر اساس «کلید (Key)» مرتب کنی؟ با uksort آشنا شو. «تابع مقایسه (Comparison Function)» یعنی تابعی که دو کلید را می سنجد و نتیجه می دهد. uksort فقط کلیدها را می سنجد و جفت کلید/مقدار را جابه جا می کند.
uksort چیست؟
uksort آرایه انجمنی را با تابع مقایسه دلخواه مرتب می کند. سپس ارتباط کلیدها با مقدارها حفظ می شود. بنابراین نتیجه تمیز و قابل پیش بینی است.
سینتکس و پارامترها
سینتکس (Syntax) یعنی شکل درست نوشتن دستور.
uksort($array, $callback);
array: آرایه هدف. callback: باید عدد منفی، صفر، یا مثبت برگرداند؛ یعنی کمتر، مساوی، یا بزرگ تر بودن کلید اول نسبت به دوم.
مثال اجراشدنی: مرتب سازی بر اساس کلید
یک تابع مقایسه می نویسیم. سپس با uksort بر اساس کلید مرتب می کنیم.
<?php
function my_sort($a, $b) {
if ($a == $b) {
return 0;
}
if ($a < $b) {
return -1;
}
return 1;
}
$arr = array(
"a" => 4,
"b" => 2,
"c" => 8,
"d" => 6
);
uksort($arr, "my_sort");
foreach ($arr as $key => $value) {
echo "[" . $key . "] => " . $value;
echo "<br>";
}
?>
گام های عملی سریع
- آرایه انجمنی بساز.
- تابع مقایسه کلیدها را تعریف کن.
- uksort را با آرایه و تابع صدا بزن.
- خروجی را چاپ و بررسی کن.
نکته: اگر می خواهی بر اساس مقدار مرتب کنی و کلیدها بمانند، از uasort استفاده کن. اگر فقط مقدار مهم است و کلیدها مهم نیستند، usort مناسب است.
هشدار: مقدار بازگشتی همیشه TRUE است. اگر callback پارامتر ارجاعی بخواهد، در PHP 8 به بعد هشدار می دهد.
لینک های مرتبط
ببین: uasort برای مقدارها و usort برای مقدارها بدون نگه داری کلید.
جمع بندی سریع
- uksort بر اساس «کلید» مقایسه می کند.
- تابع مقایسه را خودت می دهی.
- کلید/مقدارها کنار هم می مانند.
- خروجی همیشه TRUE است.
- برای مقدارها از uasort یا usort برو.