مرتب سازی در PHP - آزمون آنلاین و چهار گزینه ای پی اچ پی
مرتب سازی آرایه ها در PHP
امروز می خوایم در مورد یه موضوع خیلی جذاب و کاربردی صحبت کنیم که هر برنامه نویس PHP باید باهاش آشنا باشه: توابع مرتب سازی آرایه ها.
اگه تا حالا فکر می کردی مرتب کردن یه آرایه کار سختیه، باید بگم که سخت در اشتباهی! این توابع کار رو برات مثل آب خوردن می کنن. آماده ایم که با هم وارد این دنیای هیجان انگیز بشیم؟

تابع sort(): مرتب سازی به روش طبیعی و صعودی
خب، اول از همه میریم سراغ تابع sort() که شاید دم دستی ترین تابع برای مرتب سازی باشه. این تابع آرایه رو بر اساس مقدار، از کوچک به بزرگ مرتب می کنه.
فکر کن یه لیست از اعداد یا اسم ها داری و می خوای مرتبشون کنی. sort() دقیقا برای همین کار ساخته شده.
$numbers = array(4, 2, 8, 1, 5);
sort($numbers);
print_r($numbers);
// خروجی: Array ( [0] => 1 [1] => 2 [2] => 4 [3] => 5 [4] => 8 )
می بینی چقدر راحت بود؟ فقط کافیه اسم تابع رو صدا بزنی و آرایه رو بهش بدی.
تابع rsort(): مرتب سازی به روش نزولی
حالا اگه برعکس، بخوای آرایه ت از بزرگ به کوچک مرتب بشه، چیکار می کنی؟ جواب اینجاست: rsort(). این تابع دقیقا مثل sort() عمل می کنه، با این تفاوت که ترتیب رو برعکس می کنه.
$numbers = array(4, 2, 8, 1, 5);
rsort($numbers);
print_r($numbers);
// خروجی: Array ( [0] => 8 [1] => 5 [2] => 4 [3] => 2 [4] => 1 )
دیدم که می گی آسونه، بریم سراغ بعدی.
تابع asort(): مرتب سازی با حفظ کلیدها
یکی از چالش های مرتب سازی با sort() و rsort() اینه که کلیدهای آرایه رو دوباره سازی می کنن. اگه کلیدهای آرایه برات مهمه، باید از asort() استفاده کنی. این تابع بر اساس مقدار مرتب می کنه، اما کلیدها سر جاشون می مونن و بهم نمی ریزن.
$age = array("ali" => "35", "hassan" => "37", "reza" => "43");
asort($age);
print_r($age);
// خروجی: Array ( [ali] => 35 [hassan] => 37 [reza] => 43 )
تابع ksort(): مرتب سازی بر اساس کلیدها
گاهی وقت ها لازم داری آرایه رو بر اساس کلیدهاش مرتب کنی، نه مقدارهاش. اینجا ksort() وارد صحنه می شه. این تابع کلیدها رو مرتب می کنه و مقدارهای مربوط به هر کلید هم باهاش جابجا می شن.
$age = array("reza" => "43", "hassan" => "37", "ali" => "35");
ksort($age);
print_r($age);
// خروجی: Array ( [ali] => 35 [hassan] => 37 [reza] => 43 )
تابع usort(): مرتب سازی سفارشی
این یکی دیگه تهِ مرتب سازیه! اگه هیچ کدوم از توابع بالا کارت رو راه ننداخت، یا یه شرط خاص برای مرتب سازی داری، باید از usort() استفاده کنی.
این تابع بهت اجازه می ده خودت یه تابع برای مرتب سازی بنویسی و بهش بدی.فرض کن می خوایم یه آرایه از اعداد رو بر اساس طول ارقامشون مرتب کنیم. یه مثال می زنم که بهتر متوجه بشی.
function mySortFunction($a, $b) {
if (strlen($a) == strlen($b)) {
return 0;
}
return (strlen($a) < strlen($b)) ? -1 : 1;
}
$a = array("11", "222", "3", "4444");
usort($a, "mySortFunction");
print_r($a);
// خروجی: Array ( [0] => 3 [1] => 11 [2] => 222 [3] => 4444 )
اینطوری می تونی هر شرطی که دلت می خواد رو برای مرتب سازی اعمال کنی.
جدول مقایسه توابع مرتب سازی
برای اینکه بتونی راحت تر تفاوت این توابع رو بفهمی، یه جدول آماده کردم:
| تابع | نوع مرتب سازی | حفظ کلیدها |
|---|---|---|
| sort() | صعودی بر اساس مقدار | خیر |
| rsort() | نزولی بر اساس مقدار | خیر |
| asort() | صعودی بر اساس مقدار | بله |
| ksort() | صعودی بر اساس کلید | بله |
| usort() | سفارشی | بله |
حالا که با این توابع آشنا شدی، می خوام یه پیشنهاد بهت بدم. بعد از اینکه این مباحث رو حسابی تمرین کردی، یه کوییز کوچولو هست که می تونی شرکت کنی.
این کوییز بهت نشون می ده چقدر تو استفاده از این توابع حرفه ای شدی و می تونی نقاط قوت و ضعفت رو پیدا کنی. اینجوری می فهمی که کدوم قسمت رو باید بیشتر کار کنی و کجای کار ایراد داره.
توی این مقاله سعی کردم به زبون خودمونی و مرحله به مرحله این توابع رو بهت معرفی کنم. امیدوارم حسابی ازشون استفاده کنی.