مرتب کردن آرایه در PHP

  • آپدیت شده در تاریخ

مرتب کردن آرایه در PHP

زبان php شامل توابع قدرتمند و همچنین زیادی برای کار با آرایه ها در php دارد که بسیار جالب و کاربردی هستند . برای مثال array_keys() , array_values() , implode  و explode و غیره .. . توابع مرتب کردن آرایه در php  بسیار مهم است که باید با آن ها آشنا باشید .

مرتب کردن آرایه در php که شامل شرایط مختلفی است که کدام گروه از المان ها باید مرتب شوند , متفاوت است  . بخاطر این شرایط,  مرتب سازی می تواند بر اساس نوع های مختلفی مانند کلید (key) , یا مقدار (value) و .. انجام شود.

PHP لیستی از توابع از پیش ساخته شده (inbuilt) برای مرتب کردن آرابه در php ارایه داده است . که شامل :

  1. sort() – آرایه را از کوچک به بزرگ یا صعودی (ASCending) مرتب می کند .که دو آرگومان , یکی آرایه ای که می خواهیم مرتب کنیم و دیگری گزینه های مرتب سازی , را می پذیرد . اگر برای آرگومان دوم موردی ست نشود , مقدار پیش فرض SORT_REGULAR خواهد بود . این موارد را بصورت جزیی تر در ادامه خواهیم دید.
  2. rsort() –  آرایه را از بزرگ به کوچک یا نزولی (DESCending) مرتب می کند
  3. asort() – آرایه انجمنی را به صورت صعودی و بر حسب مقدار عناصر مرتب می کند
  4. arsort() – آرایه انجمنی را به صورت نزولی و بر حسب مقدار عناصر مرتب می کند
  5. usort() – به جای آپشن های مرتب سازی , یک تابع بازگشتی (callback-function) که بر اساس مرتب سازی هر خانه از آرایه که مرتب می شود , فراخوانی و بر طبق شرایط عملیاتی انجام می دهد.
  6. uasort() – این تابع ترکیبی از تابع usort() و asort() است که آرایه را بصورت نزولی و بر حسب مقادیر مرتب و همراه با این عملیات تابع تعیین شده توسط کاربر را اجرا می کند .
  7. array_multisort() – این تابع برای مرتب کردن چندین آرایه در php بطور همزمان به کار می رود . همچنین برای مرتب کردن آرایه های چند بعدی با ست کردن آپشن مشخص مرتب سازی استفاده می شود .
  8. natsort() – توابع مرتب کردن آرایه در php که بالا لیست شدند برای مرتب کردن آرایه بر اساس استانداردی که تعریف شده استفاده می شوند . اما تابع natsort() , برای مرتب سازی آرایه براساس استانداردهایی که شخص تعیین می کند , می توان از آن بهره برد .
  9. natcasesort() – مشابه تابع natsort() است اما برای مواردی که کوچک و بزرگ بودن کاراکتر ها مهم نباشد (case-insensitive) استفاده می شود.

مرتب کردن آرایه در PHP

طبقه بندی توابع بالا برای مرتب سازی آرایه در php بر اساس مقادیر (value) استفاده می شود . بعضی از توابع که مرتب سازی آرایه ها را بر اساس کلید (key) مشخص می کند بصورت زیر است

  • Ksort() – مشابه تابع sort() که آرایه را از کوچک به بزرگ یا صعودی (ASCending) مرتب می کند , است اما به جای مقدار بر اساس کلید مرتب می کند
  • Krsort() – این تابع برای مرتب کردن آرایه بر اساس کلید و بصورت نزولی استفاده می شود .
  • Uksort() – ترکیب دو تابع ksort() و usort() است که بر اساس کلید مرتب می کند و به عنوان آرگومان دوم یک تابع بازگشتی را می پذیرد .

 

بنابراین , تعداد زیادی از توابع برای مرتب کردن آرایه در php بر اساس شرایط مختلف وجود دارد . حالا نیاز داریم که در مورد flag آپشن هایی که در بالا اشاره شد و می تواند در مرتب سازی آرایه بر اساس مقدار (value) مهم باشد را میبینیم .

  • SORT_REGULAR – اگر هیچ آپشنی ست نشود , این مقدار پیش فرض برای توابع مرتب سازی استفاده می شود . بر اساس این آپشن مقادیر آرایه بدون هیچ تغییری مرتب خواهند شد .
  • SORT_NUMERIC – همانطور که از نام مشخص است , بر اساس اعداد مرتب می کند.
  • SORT_STRING – با مشخص کردن این فلگ , بر اساس حروف الفبا (alphabetical) مرتب می شود .
  • SORT_NATURAL – به شما امکان مشخص کردن دستی مرتب سازی را می دهد .
  • SORT_FLAG_CASE – اگر این آپشن ست شود , مرتب سازی حروف الفبا بدون اهمیت کوچک و بزرگ بودن انجام می شود .
  • SORT_LOCALE_STRING – این فلگ به شما اجازه مرتب سازی بصورت الفبایی و بر اساس زبان کانفیگ شده و یا ست شده توسط تابع locate() انجام می دهد .

 

مثال مرتب کردن آرایه در php

خب یک مثال از تفاوت مرتب سازی استاندارد و طبیعی بین تابع sort() و natsort() را ببینیم .

در اسکریپت php بالا , تابع sort() مرتب کردن اعداد در فرمت استاندارد استفاده شده است . با مشخص کردن آپشن SORT_STRING , همه المان ها بر اساس استاندارد الفبایی اعداد مرتب می شود و خروجی بصورت زیر است :

در این مورد اجازه بدید , از تابع natsort() برای دریافت نتیجه مرتب سازی ببنیم . برای اینکار کافی است تابع زیر را به جای خط دوم کد php بالا استفاده کنید .

حالا نتایج را می بینید .(کار با اعداد در php)

امیدوارم از آموزش مرتب کردن آرایه در PHP نهایت استفاده را برده باشید .

هر سوالی داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .

موفق و پیروز باشید

حسن شفیعی توسعه دهنده وب و موبایل مدیر سایت علاقه خاصی به برنامه نویسی وب و موبایل دارم و هر روز تلاش می کنم به این حوزه مسلط تر شوم و اطلاعاتم را به شکل کاربردی برای علاقه مندان در وب به اشتراک بگذارم. اگر نیاز به برنامه نویس برای انجام پروژه و نوشتن اسکریپت های سمت وب, اپلیکیشن های اندروید و ios, پیدا کردن راه حل توسعه و غیره داشتید حتما از طریق تماس با ما/ واتساپ/ تلگرام بهم پیام بدید. برایتهیه هاست مطمین و پرسرعت کلیک کنید
مطالب زیر را حتما بخوانید
دیدگاه کاربران (۷)

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

  1. ابوالفضل موحدی فر ۲۰ شهریور ۱۴۰۰

    با سلام ممنون از سایت خوبتون

    ببخشید من نفهمیدم که در تابع usort ، پارامتر دومش که به صورت تابع هست اگه تابع -۱ برگردونه چی میشه و چه فرقی داره با وقتی که ۱ برگردونه یا تابع ۰ برگردونه؟

    ممنون

    پاسخ
    1. حسن شفیعی ۲۰ شهریور ۱۴۰۰

      سلام. خوشحالیم که مفید واقع شده.
      یه تایع مقایسه ای ست می کنید و می توانید کوچکتر بزرگتر یا مساوی بودن مقادیر رو چک کنید :
      مثال :
      https://www.w3schools.com/php/phptryit.asp?filename=tryphp_func_usort

      پاسخ
  2. zahra.gh ۱۳ اردیبهشت ۱۴۰۰

    عالی و کاربردی بود، ممنون

    پاسخ
  3. ایمان ۲۷ فروردین ۱۳۹۹

    سلام
    برای سورت کردن آرایه مولتی دایمنشال با مقدار فارسی بر اساس حروف الفبا ، راهکاری دارید؟

    پاسخ
    1. حسن شفیعی ۲۷ فروردین ۱۳۹۹

      سلام. با تابع setlocale ابتدا نوع زبان رو مشخص کنید و بعد اقدام به سورت کردن آرایه کنید
      همچنین می توانید از https://www.php.net/manual/en/class.collator.php استفاده کنید

      پاسخ
  4. سعید ۴ خرداد ۱۳۹۷

    با سلام. من آرایه ای دارم که وقتی با print_r اونو چاپ میکنم برای هر عنصر آرایم شماره مینویسه به ترتیب از ۰ تا آخر.
    از دستور array_unique استفاده کردم برای حذف عناصر تکراری و این باعث شد که الان با print_r آرایه را چاپ میکنم شماره هاش بهم بریزه و به ترتیب ۰ و ۱ و ۲ و …. نباشه . برای مرتب کردن شماره هاش باید چیکار کرد؟

    پاسخ
    1. حسن شفیعی ۴ خرداد ۱۳۹۷

      سلام . از آموزش https://netparadis.com/php-array-sort استفاده کنید.
      موفق باشید.

      پاسخ
دوره های آموزشی