نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی پرتال اطلاعاتی
  • خانه
  • مشاوره
  • مرتب سازی یک آرایه بر اساس حروف الفبا php. مرتب سازی آرایه در php

مرتب سازی یک آرایه بر اساس حروف الفبا php. مرتب سازی آرایه در php

آخرین به روز رسانی: 1.11.2015

تابع is_array

تابع is_array () بررسی می کند که آیا متغیر یک آرایه است یا نه، و اگر باشد، true را برمی گرداند، در غیر این صورت false را برمی گرداند. مثلا:

$isar = is_array($technics); echo ($isar==true)?"this is an array":"This is not a array";

توابع count/sizeof

توابع count() و sizeof() تعداد عناصر آرایه را بدست می آورند:

$number = count($technics); // مانند // $number = sizeof($technics); echo "آرایه technics عناصر $number دارد";

توابع مخلوط کردن

تابع shuffle عناصر آرایه را به طور تصادفی به هم می زند:

$os = array("Windows 95"، "Windows XP"، "Windows Vista"، "Windows 7"، "Windows 8"، "Windows 10"); shuffle($os); print_r($os); // یکی از گزینه ها // Array ( => Windows 95 => Windows 7 => Windows Vista => Windows XP => Windows 10 => Windows 8)

توابع فشرده

تابع فشرده به شما این امکان را می دهد که یک آرایه انجمنی از مجموعه ای از متغیرها ایجاد کنید، جایی که نام متغیرها خود کلیدها خواهند بود:

Apple II => Apple => 1978) ?>

تابع فشرده مجموعه ای از متغیرها را در پرانتز دریافت می کند. هر متغیر بدون علامت $ نقل قول می شود. نتیجه تابع یک آرایه جدید است.

مرتب سازی آرایه ها

دو نوع مرتب‌سازی در PHP وجود دارد: مرتب‌سازی رشته‌ها بر اساس حروف الفبا و مرتب‌سازی اعداد به ترتیب صعودی/نزولی. اگر مقادیری که باید مرتب شوند رشته‌ای هستند، بر اساس حروف الفبا مرتب می‌شوند و اگر اعداد هستند، به ترتیب عددی صعودی مرتب می‌شوند. PHP به طور پیش فرض نوع مرتب سازی را انتخاب می کند.

برای مرتب سازی به ترتیب صعودی، از تابع asort استفاده کنید:

"Lenovo IdeaTab A3500"، "samsung" => "Samsung Galaxy Tab 4"، "apple" => "Apple iPad Air"); asort($tablets); پژواک"

    "; foreach ($tablets به عنوان $key => $value) (‎echo"
  • $key: $value
  • ";) اکو"
"; ?>

در این مورد، مقادیر آرایه نشان دهنده رشته ها هستند، بنابراین PHP مرتب سازی بر اساس حروف الفبا را انتخاب می کند. با این حال، با کمک یک پارامتر اضافی، می‌توانیم به صراحت نوع مرتب‌سازی را به مفسر PHP بگوییم. این پارامتر می تواند سه مقدار داشته باشد:

    SORT_REGULAR: انتخاب مرتب سازی خودکار

    SORT_NUMERIC: مرتب سازی عددی

    SORT_STRING: مرتب سازی بر اساس حروف الفبا

بیایید به صراحت نوع مرتب سازی را مشخص کنیم:

Asort ($قرص، SORT_STRING)؛

برای مرتب کردن یک آرایه به ترتیب معکوس، از تابع arsort استفاده کنید:

Arsort ($ قرص);

مرتب سازی کلید

تابع asort بر اساس مقادیر عناصر مرتب می شود، اما مرتب سازی بر اساس کلیدها نیز وجود دارد. با تابع ksort نشان داده می شود:

Ksort ($قرص، SORT_STRING)؛

مرتب سازی بر اساس کلیدها به ترتیب معکوس توسط تابع ()krsort انجام می شود:

Krssort ($ قرص)؛

مرتب سازی طبیعی

اگرچه توابع مرتب سازی فوق کار خود را به خوبی انجام می دهند، اما هنوز کافی نیستند. برای مثال، بیایید آرایه زیر را به ترتیب صعودی مرتب کنیم:

Windows 10 => Windows 7 => Windows 8) ?>

از آنجایی که مقادیر نشان دهنده رشته ها هستند، PHP بر اساس حروف الفبا مرتب می شود. با این حال، این نوع به اعداد و حروف احترام نمی گذارد. بنابراین، مقدار "Windows 10" در همان ابتدا خواهد رفت و نه در پایان، همانطور که باید می بود. و برای حل این مشکل، PHP تابع natsort() را دارد که مرتب سازی طبیعی را انجام می دهد:

Windows 7 => Windows 8 => Windows 10) ?>

اگر بخواهیم مرتب سازی به حروف بزرگ و کوچک نیز حساس باشد، می توانیم از تابع natcasesort() استفاده کنیم.

مرتب سازی یکی از مهم ترین مراحل کار با آرایه ها است. برای درک اهمیت آن کافی است اقداماتی مانند مرتب سازی فیلم ها به ترتیب حروف الفبا یا مرتب سازی هر قیمتی به ترتیب صعودی یا نزولی و غیره را یادآوری کنیم. موافقم، اقدامات بسیار رایج برای برنامه های مختلف! امروز در مورد نحوه مرتب سازی عناصر آرایه با توجه به شرایط داده شده صحبت خواهیم کرد.

بنابراین، مرتب سازی کار با آرایه ها را آسان تر می کند. وقتی عناصر مرتب می شوند، پیدا کردن آنها و انجام اقدامات لازم با آنها آسان تر است، به عنوان مثال، مواردی که من در مورد آنها کمی بالاتر نوشتم. همه چیز به وظیفه ای که پیش رو دارید بستگی دارد.

وظایف ممکن است متفاوت باشند، اما ابزارهایی که ما استفاده خواهیم کرد استاندارد باقی خواهند ماند. این ابزارها توابع خاصی هستند که برای مرتب سازی عناصر یک آرایه استفاده می شوند.

چندین مورد از این توابع در php وجود دارد، و اینکه کدام یک از آنها استفاده کنید دوباره به وظیفه خاص و همچنین به اینکه آیا آرایه شما یک آرایه انجمنی یا یک آرایه فهرستی است بستگی دارد.

بیایید نگاهی به این توابع بیندازیم و ببینیم چگونه کار می کنند.

مرتب سازی آرایه-لیست ها به ترتیب حروف الفبا و معکوس

ابتدا اجازه دهید با یک عملکرد نسبتا ساده و قابل درک آشنا شویم. مرتب سازی().

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

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

$Mass = آرایه ("Katya"، "Anya"، "Lena"، "Andrey"); مرتب سازی ($Mass); print_r($Mass); ?>

و نتیجه به شرح زیر خواهد بود. همانطور که در تصویر سمت راست می بینید، موارد بر اساس حروف الفبا مرتب شده اند. اگر به جای عناصر رشته اعداد داشته باشیم، این تابع اعداد را نیز به ترتیب صعودی مرتب می کند. می توانید خودتان آن را بررسی کنید.

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

این تابع نامیده می شود مرتب سازی(). اینطوری کار میکنه:

$Mass = آرایه ("Katya"، "Anya"، "Lena"، "Andrey"); مرتب سازی ($Mass); print_r($Mass); ?>

همانطور که می بینید، اکنون نتیجه کاملا برعکس است. عناصر آرایه به ترتیب نزولی مرتب می شوند که در این مورد به ترتیب حروف الفبا معکوس است.

من فکر می کنم که با این توابع همه چیز بسیار واضح است. آنها را با آرایه های خود تست کنید و هیچ سوالی نخواهید داشت.

مرتب سازی آرایه های انجمنی

همه چیز خوب است، با این حال، با آرایه های انجمنی، دیگر نمی توانیم از این توابع استفاده کنیم، زیرا آنها پیوند بین مقدار و کلید آرایه را قطع می کنند. بنابراین، ما باید با چند توابع دیگر آشنا شویم که به ما امکان می دهد آرایه های انجمنی را مرتب کنیم.

همانطور که می دانیم، آرایه های انجمنی دارای کلید و مقادیر هستند. بنابراین، مرتب سازی می تواند توسط کلیدها یا مقادیر انجام شود.

بیایید با مرتب سازی بر اساس مقادیر شروع کنیم.

برای مرتب کردن مقادیر یک آرایه انجمنی به ترتیب حروف الفبا، از تابع استفاده می کنیم مرتب سازی().

برای انجام این کار، ابتدا یک آرایه انجمنی ایجاد کنید، تابع را اعمال کنید، نتیجه را روی صفحه نمایش دهید.

$Mass["one"]="کیت"; $Mass["two"]="Boris"; $Mass["three"]="Anya"; $Mass["four"]="ریتا"; مرتب سازی ($Mass); print_r($Mass); ?>

همانطور که می بینید، مقادیر آرایه انجمنی بر اساس حروف الفبا مرتب شده اند، اما ارتباط آنها با کلیدها حفظ می شود.

به همین ترتیب، تابع آرایه()، با این تفاوت که مقادیر آرایه انجمنی را به ترتیب معکوس مرتب می کند.

$Mass["one"]="کیت"; $Mass["two"]="Boris"; $Mass["three"]="Anya"; $Mass["four"]="ریتا"; آرایه ($Mass); print_r($Mass); ?>

در اینجا دوباره می بینیم که مقادیر عناصر آرایه ارتباط خود را با کلیدها حفظ می کنند، اما به ترتیب معکوس مرتب شده اند.

ما می توانیم همان آرایه انجمنی را بر اساس کلیدها مرتب کنیم.

همانطور که احتمالاً قبلاً حدس زده اید، این می تواند به ترتیب حروف الفبا یا معکوس انجام شود.

برای مرتب کردن یک آرایه بر اساس کلیدها به ترتیب حروف الفبا، به یک تابع نیاز داریم ksort().

$Mass["one"]="کیت"; $Mass["two"]="Boris"; $Mass["three"]="Anya"; $Mass["four"]="ریتا"; xsort($Mass)؛ print_r($Mass); ?>

آرایه بر اساس کلیدها به ترتیب حروف الفبا مرتب شده است.

برای مرتب کردن یک آرایه بر اساس کلیدهای آن به ترتیب معکوس، از تابع استفاده کنید krssort().

$Mass["one"]="کیت"; $Mass["two"]="Boris"; $Mass["three"]="Anya"; $Mass["four"]="ریتا"; krssort($Mass); print_r($Mass); ?>

من فکر می کنم که همه چیز از اسکرین شات مشخص است.

مرتب سازی سفارشی

ما همچنین می توانیم ترتیب مرتب سازی خود را تنظیم کنیم، یعنی یک مرتب سازی سفارشی ایجاد کنیم.

همچنین توابع خاصی در php برای این کار وجود دارد.

برای مرتب سازی سفارشی لیست ها، یک تابع ارائه شده است usort().

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

تابع مقایسه دو متغیر خواهد داشت و باید یکی از مقادیر را برگرداند:

1 - اگر عنصر مقایسه اول بزرگتر از دوم باشد.

-1 - اگر دومی بزرگتر از اولی باشد.

0 - اگر عناصر برابر باشند.

بنابراین، برای مثال، می‌توانیم عناصر یک آرایه را به ترتیب صعودی به طول آنها مرتب کنیم.

برای انجام این کار، ابتدا خود آرایه را که شامل عناصر رشته ای با طول های مختلف است، اعلام می کنیم.

پس از آن، ما از تابع برای مرتب سازی سفارشی استفاده می کنیم usort(). ما آن را به عنوان آرگومان ارسال می کنیم: نام آرایه ما و نام تابعی که برای مقایسه عناصر ایجاد کرده ایم.

پس از همه این ها، می توانیم نتیجه را روی صفحه چاپ کنیم تا مطمئن شویم که عناصر ما به ترتیب صعودی طول مرتب شده اند.

$Mass = آرایه ("Andrey"، "Yana"، "Katya"); تابع check_length($str1,$str2)( $length1 = strlen($str1)؛ $length2 = strlen($str2)؛ if($length1 == $length2): بازگشت 0؛ elseif($length1

نتیجه زیر را می گیریم. عناصر آرایه ما به ترتیب افزایش طول مرتب شده اند.

همچنین می‌توانیم مرتب‌سازی سفارشی یک آرایه انجمنی را با کلیدهای آن انجام دهیم. برای این ما به یک تابع نیاز داریم uksort()و خود آرایه انجمنی.

بیایید عملکرد سفارشی را ثابت نگه داریم، یعنی طول کلیدها را با هم مقایسه کنیم.

کلیدهای عناصر آرایه بر اساس طولشان به ترتیب صعودی مرتب شده اند.

و همچنین می توانیم یک مرتب سازی سفارشی از یک آرایه انجمنی بر اساس مقادیر عناصر آن ایجاد کنیم. تابع به ما در این امر کمک خواهد کرد. uasort().

اصل همچنان همان است.

$Mass["one"]="yana"; $Mass["two"]="andrey"; $Mass["three"]="kat"; تابع check_length($str1,$str2)( $length1 = strlen($str1)؛ $length2 = strlen($str2)؛ if($length1 == $length2): بازگشت 0؛ elseif($length1

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

البته، تابع تعریف شده توسط کاربر می تواند متفاوت باشد، به عنوان مثال، می تواند مقادیر را به یک مورد مشترک ارسال کند یا کارهای دیگری را انجام دهد.

برای اینکه واقعاً بفهمید مرتب‌سازی سفارشی چگونه کار می‌کند، باید تمرین کنید و سعی کنید نوعی تابع مقایسه را خودتان بنویسید.

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

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

اگر هنوز در به‌روزرسانی‌های وبلاگ مشترک نشده‌اید، مشترک شوید. فرم اشتراک در زیر آمده است.

آنا کوتلنیکووا با شما بود. شما را در مقالات بعدی می بینیم.

هنگام کار بر روی بسیاری از سایت ها، مرتب سازی داده های آرایه به ترتیب حروف الفبا اغلب با سوال مواجه می شود. بسیاری از مردم آرایه های اضافی را برای این کار می نویسند، جداول بزرگ را مقایسه می کنند و هر نام را مرتب می کنند ... این گزینه بهترین نیست، اگرچه ما نیز آن را در نظر خواهیم گرفت. در این مقاله می‌خواهم ساده‌ترین و کوتاه‌ترین راه را ارائه دهم که در صورت مطالعه دقیق راهنماها، می‌توانید آن را در مستندات پیدا کنید.

PHP آرایه الفبایی

روش بسیار ساده است و شامل دو مرحله است: تنظیم محلی (setlocal) و مرتب سازی مستقیم آرایه. مثالی را با نظرات در نظر بگیرید.

کد پی اچ پی

setlocale(LC_ALL، "Russian_Russia.1251"); // محلی را برای حروف روسی تنظیم کنید

// نمونه ای از آرایه ای که در آن کلمات به ترتیب نیستند
$example=array("جار"،"بوریس"،"نمایش"،"پروفایل"،"شکارچی"،"فئودور"،"همسر"،"صدا");

Natcasesort($example, SORT_LOCALE_STRING)؛ // مرتب سازی آرایه به حروف بزرگ و کوچک حساس نیست
// برای حساس به حروف بزرگ، به جای natcasesort از sort استفاده کنید

// نمایش نتیجه
foreach ($example به عنوان $key => $value)(
echo "$value"(!LANG:; // فقط کلمات را نمایش می دهد، بدون فهرست
}
?>

تظاهرات دانلود منابع
می توانید نحوه عملکرد اسکریپت را در نسخه نمایشی مشاهده کنید. در صورت تمایل می توانید آرشیو را نیز به همراه فایل دانلود کنید.

اگر سرور شما روی ویندوز نیست، باید لوکال های دیگر یا چندین زبان را همزمان نصب کنید:

(LC_ALL،"ru_RU.CP1251", "rus_RUS.CP1251", "Russian_Russia.1251");!}
// ru_RU.CP1251 را برای FreeBSD چاپ می کند
// rus_RUS.CP1251 را برای لینوکس نمایش می دهد
// خروجی Russian_Russia.1251 برای ویندوز

من با پاسخ به یکی از سؤالات پاسخ خواهم داد - محلی برای اوکراین در PHP به این صورت است:


چگونه محلی را برای سایر رمزگذاری ها در PHP تنظیم کنیم؟

// تنظیمات محلی برای ویندوز

// Windows encoding-1251
setlocale(LC_ALL، "Russian_Russia.1251");

// رمزگذاری KOI8-R
setlocale(LC_ALL، "Russian_Russia.20866");

// رمزگذاری UTF-8 (با احتیاط استفاده کنید)
setlocale(LC_ALL، "Russian_Russia.65001");
?>

روش دوم برای حروف الفبا کردن آرایه PHP

اگر این روش برای شما مناسب نیست و می خواهید راه سختی را طی کنید، آرایه ای مانند این ایجاد کنید:

کد پی اچ پی

=> الف
=> ب
=> در
=> g
=> q
=> e
=> یو
=> w
=> ساعت
=> و
=> هفتم
=> به
=> ل
=> متر
=> n
=> در مورد
=> n
=> ص
=> با
=> t
=> y
=> f
=> x
=> ج
=> ساعت
=> w
=> تو
=> ب
=> s
=> ب
=> e
=> یو
=> من
و روی حرف اول آرایه دوم تکرار کنید.
حرف اول هر عنصر آرایه به صورت زیر محاسبه می شود:

کد پی اچ پی

$city="مسکو"; // برای مثال عنصر با شاخص 1

$first_letter = mb_substr($city,0,1,"UTF-8"); // حرف "M" را دریافت کنید
از آنجایی که ما با حروف روسی کار می کنیم (رمزگذاری چند بایتی)، بهتر است از تابع استفاده کنیم mb_substrو در انتها بهتر است کدگذاری دقیق داده متغیر یا آرایه در مورد ما UTF-8 مشخص شود.

ممنون از توجه شما! امیدوارم اطلاعات مفید بوده باشد. اگر سوالی دارید، در نظرات بنویسید.

و با شما در مورد "خوبی" های مختلفی که ممکن است هنگام نهایی کردن راه حل های آماده به آنها نیاز داشته باشید صحبت کنید.

و یکی از آنها، که من شخصاً باید اغلب در محل کار با او ملاقات کنم، این است مرتب سازی آرایهphp.

چنین جلسات مکرری به این دلیل بود که، همانطور که تمرین نشان می دهد، مردم گهگاه دوست دارند، برای تغییر، ترتیب نمایش اشیاء را در سایت خود تغییر دهند - خواه این کالاها در فروشگاه آنلاین باشد، پیام های کاربر در انجمن و یا بلوک های اطلاعات در سایت های کارت ویزیت

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

یک تئوری کوچک در مورد آرایه های php

PHP یک زبان برنامه نویسی سمت سرور است. مبتنی بر سرور، زیرا اسکریپت هایی که توسط کاربران از طریق رابط وب (مرورگر اینترنت) اجرا می شوند، بر روی سرور ذخیره و اجرا می شوند.

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

آرایه در برنامه نویسی مجموعه ای از برخی داده ها است. آنها از عناصر آرایه تشکیل شده اند که جفت [index] => [value] هستند.

آرایه ها می توانند ایستا، پویا، ناهمگن و غیره باشند. (یک علم کامل) 🙂 برای کار با آنها، طبقه بندی به تک بعدی و چند بعدی برای ما کافی است.

برای اینکه بتوانید تفاوت بین آنها را درک کنید، کافی است توضیحی در مورد ساختار آنها ارائه دهید.

آرایه php یک بعدی:

آرایه (=> 1 => 2 => 3)

آرایه چند بعدی php:

آرایه ( => آرایه ( => 1) => آرایه ( => 2) => آرایه ( => 3))

متوجه شدید؟ اگر نه، به عناصر آرایه چند بعدی php توجه کنید. آنها خودشان آرایه هستند. آن ها آرایه چند بعدی مجموعه ای از آرایه ها است. سطح لانه سازی آنها می تواند خودسرانه بزرگ باشد.

حالا فکر کنم معلومه 🙂

من همچنین می خواهم به طور جداگانه مفهوم آرایه انجمنی php را برجسته کنم. در زندگی واقعی، آنها مثل همیشه رایج نیستند، اما هنوز جایی برای بودن دارند.

به طور خلاصه، اینها آرایه هایی هستند که در آنها کلید و مقدار عنصر آرایه به طور جدایی ناپذیری به هم مرتبط هستند و ارتباط منطقی خاصی بین آنها وجود دارد که هرگز نباید قطع شود.

نمونه ای از آرایه انجمنی ساخت زیر است:

آرایه ( => 12 [نام] => ایوانف ایوان ایوانوویچ [متوسط_امتیاز] => 3)

همانطور که می بینید، در اینجا مقادیر کلیدها و مقادیر عناصر آرایه ارتباط نزدیکی دارند و به هیچ وجه نباید این ارتباط قطع شود. به همین دلیل، آرایه های انجمنی اغلب "فرهنگ لغت" یا "فرهنگ لغت" نامیده می شوند.

بنابراین در مرتب سازی آرایه php باید این ویژگی را در نظر گرفت زیرا همه روش ها برای چنین ساختارهایی مناسب نیستند.

در خود PHP آرایه ها به دو صورت ایجاد می شوند:

  1. $books = آرایه ('ABC', 'Primer', 'Dictionary); یا $books = array('azb' => 'ABC', 'buk' => 'Primer', 'slov' => 'Dictionary'); گزینه دوم زمانی استفاده می شود که عنصر نیاز به مشخص کردن صریح فیلد کلیدی (مرتبط با آرایه های انجمنی) داشته باشد. اگر مشخص نشده باشد، کلیدهای عنصر آرایه به طور پیش فرض اعداد خواهند بود. شروع از 0 (صفر).
  2. $books = 'ABC'; $books = 'پرایمر'; $books = 'پرایمر';

در هر دو مورد $books یک آرایه خواهد بود. بنابراین، اگر چنین ساختارهایی را در کد سایت خود مشاهده کنید، دیگر چیزی برای شما غیرقابل درک نخواهد بود.

اگر می خواهید در مورد آرایه های php اطلاعات بیشتری کسب کنید، توصیه می کنم ویدیوی زیر را تماشا کنید:

یادآوری می کنم که برای دیدن ساختار آرایه در صفحه نمایش خود، پس از اعلام آرایه در کد سایت، باید ساختار زیر را بنویسید:

پژواک"

"; print_r(array_var); die();

اگر متغیری که چاپ می کنید یک آرایه است، متن با خط زیر شروع می شود:

آرایه(...

و چند کلمه دیگر در مورد موضوع مقاله ما - مرتب سازی آرایهphp.

همانطور که می‌دانید، داده‌ها در آرایه‌ها ساختار یافته‌اند و عناصر در یک توالی مشخص مرتب شده‌اند. برای تغییر آن، فقط باید آرایه php را مرتب کنیم که توسط توابع زبان آماده پیاده سازی شده است.

بنابراین، تنها کاری که باید انجام دهیم این است که پس از اعلام آرایه، تابع مورد نیاز را فراخوانی کرده و آن را به عنوان یک پارامتر مشخص کنیم.

بیایید به مروری بر خود توابع بپردازیم.

توابع مرتب سازی آرایه php

لیست کامل آنها در اسناد رسمی زبان php ارائه شده است:

برای مرتب کردن یک آرایه php با استفاده از یک تابع خاص، باید پس از اعلام آرایه و پر کردن آن با مقادیر، آن را فراخوانی کنید و آرایه خود را به عنوان پارامترهای آن مشخص کنید. مثلا:

$cars = آرایه ("Toyota"، "Mazda"، "Mitsubishi"); مرتب سازی ($cars);

بیایید به طور خلاصه عملکرد هر یک از آنها را بررسی کنیم. توابع در قالبی که باید در کد فراخوانی شوند مشخص خواهند شد، یعنی. "name(parameter1, parameter2, ...);".

فراموش نکنید که ";" را بعد از فراخوانی تابع قرار دهید، زیرا بدون آن، یک پیام خطای زیبا روی صفحه ظاهر می شود 🙂

به عنوان یک مثال گویا، بیایید یک آرایه تک بعدی ساده را در نظر بگیریم که در آن کلیدها و مقادیر نامرتب خواهند بود تا نتایج اجرای توابع بصری و قابل درک تر باشد.

آرایه (=> 11 => 18 => 9)

بنابراین، چگونه می توانید یک آرایه را به ترتیب مناسب در php مرتب کنید؟

آرایه php ساده را بر اساس مقدار مرتب می کند

اگر تماشای مطالب ویدیویی را به خواندن ترجیح می دهید، پس من می خواهم به شما توصیه کنم که این ویدیو را تماشا کنید، که به طور قابل فهم و واضح کار توابع مرتب سازی آرایه php را از این بلوک نشان می دهد:

اگر بعد از آن هنوز سؤالی دارید، می توانید اطلاعات دقیق تر در مورد هر تابع را در زیر بیابید.

sort ($array, $flag);یکی از ساده ترین و درخواستی ترین توابع است. به شما امکان می دهد تا آرایه را به ترتیب صعودی در php با در نظر گرفتن مقادیر عناصر، به عنوان مثال، مرتب کنید. آنها از کوچکترین مقدار به بزرگترین آنها مرتب خواهند شد. این یک متغیر آرایه و یکی از پرچم های مرتب سازی را به عنوان پارامتر می گیرد که به شما امکان می دهد رفتار مرتب سازی را تغییر دهید.

لیست پرچم ها:

  • SORT_REGULAR - عناصر بدون تغییر نوع مقایسه می شوند
  • SORT_NUMERIC - عناصر به عنوان اعداد مقایسه می شوند
  • SORT_STRING - عناصر به عنوان رشته مقایسه می شوند
  • SORT_LOCALE_STRING - مقایسه رشته ها، اما با در نظر گرفتن محلی فعلی.
  • SORT_NATURAL - مقایسه رشته ای عناصر با توجه به ترتیب طبیعی آنها (مانند natsort)
  • SORT_FLAG_CASE - مرتب‌سازی غیرحساس به حروف کوچک و بزرگ عناصر آرایه php (می‌تواند با SORT_STRING یا SORT_NATURAL به صورت بیتی OR ترکیب شود).

اما، در بیشتر موارد، نتیجه اجرای تابع حتی بدون این پرچم‌های مشخص درست است. به طور پیش فرض (اگر چیزی مشخص نشده باشد) SORT_REGULAR استفاده خواهد شد.

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

آرایه (=> 9 => 11 => 18)

همانطور که می بینید، پس از مرتب سازی آرایه بر اساس مقادیر، مقادیر کلیدهای آنها نیز تغییر کرد، زیرا مرتب سازی بدون حفظ رابطه کلید-مقدار، همانطور که در اسناد رسمی php بیان شده است، کار می کند.

در نتیجه، این گزینه برای اکثریت قریب به اتفاق موارد مناسب است.

sort ($array, $flag);تابعی است که از نوع آنتاگونیست است. آنتاگونیست، زیرا آرایه را به همان روش مرتب می کند، فقط نه به ترتیب صعودی، بلکه به ترتیب نزولی، یعنی. ابتدا عناصر آرایه php با بیشترین مقدار وارد می شوند.

همچنین می توانید دو پارامتر را به آن ارسال کنید: خود آرایه و پرچم مرتب سازی، و مانند مرتب سازی برای آرایه های یک بعدی مناسب تر است. آرایه آزمایشی ما پس از فراخوانی این تابع به شکل زیر خواهد بود:

آرایه (=> 18 => 11 => 9)

sort ($array, $flag);یک تابع php برای مرتب سازی یک آرایه بر اساس مقدار است که مکانیسم آن نیز بسیار شبیه مرتب سازی است.

با تنها استثنا که به شما اجازه می دهد تا آرایه php را بر اساس مقدار عناصر آن مرتب کنید و در عین حال رابطه کلید و مقدار را حفظ کنید.

بنابراین، این ویژگی برای مرتب سازی آرایه انجمنی php، یعنی ساختارهایی که این ارتباط منطقی و مهم است.

عناصر به ترتیب صعودی مرتب خواهند شد، زیرا به شما این امکان را می دهد که با حفظ کلیدها، یک آرایه php انجمنی را بر اساس مقدار مرتب کنید.

شما همچنین می توانید دو پارامتر را ارسال کنید. آرایه آزمایشی ما به شکل زیر خواهد بود:

آرایه (=> 9 => 11 => 18)

همانطور که می بینید، تفاوت مرتب سازی فقط در ذخیره کلیدهای مقادیری است که آرایه php بر اساس آنها مرتب شده است. به این می گویند حفظ رابطه کلید-مقدار، که در مرتب سازی آرایه های انجمنی php بسیار مهم است.

arsort($array, $flag);یکی دیگر از تابع های php برای مرتب کردن یک آرایه بر اساس مقدار است. آنتاگونیست یکسان.

بر اساس همان اصل تابع ذکر شده کار می کند، فقط مرتب سازی آرایه php در این حالت به ترتیب نزولی خواهد بود. همچنین یک گزینه عالی برای مرتب سازی آرایه های انجمنی php.

پس از فراخوانی این تابع، مثال ما به شکل زیر خواهد بود:

آرایه (=> 18 => 11 => 9)

توابع پیشرفته آرایه پی اچ پی مرتب سازی بر اساس مقدار

این بلوک از توابع، بر خلاف موارد قبلی، که به شما اجازه می‌داد ترتیب را به ترتیب نزولی/صعودی تغییر دهید، به شما امکان می‌دهد تا تنوع اضافه کنید و عناصر را در توالی‌های متفاوتی غیر از موارد "سنتی" مرتب کنید.

این ویژگی آنها را برای حل کارهای مختلف غیر استاندارد، گاهی اوقات بسیار جالب، مناسب می کند

natsort($array);- این تابع تنوع را به خانواده راه حل های مرتب سازی می آورد، زیرا مکانیسم کار آن اساساً با آنها متفاوت است. natsort تنها یک پارامتر ورودی دارد - آرایه‌ای است که باید مرتب‌سازی شود، مقادیر آن به ترتیب آشنا برای شخص مرتب می‌شود. چنین الگوریتمی "نظم طبیعی" نامیده می شود که در زبان روسی به معنای "نظم طبیعی" است. برای درک معنای این عبارت، آرایه دیگری را به عنوان مثال در نظر می گیریم:

آرایه ( => student5 => student1 => student10)

علاوه بر این، تابع natsort رابطه کلید-مقدار را حفظ می کند. بنابراین کار آن را با asort که تا حد امکان شبیه به آن است مقایسه می کنیم. پس از فراخوانی آخرین آرایه ما به شکل زیر در می آید:

آرایه ( => student1 => student10 => student5)

اگر natsort را فراخوانی کنید، آرایه حاصل به این صورت خواهد بود:

آرایه ( => student1 => student5 => student10)

من فکر می کنم اکنون تفاوت برای شما قابل مشاهده است و اصل ناتسورت برای شما روشن خواهد شد :-)

shuffle($array);- یک تابع فوق العاده و بسیار مفید که با آن می توانید یک آرایه php را به هم بزنید و عناصر آن را به ترتیب تصادفی قرار دهید.

زمانی که نیاز دارید کالاهای یک فروشگاه اینترنتی را به ترتیب تصادفی در یک دسته بندی یا در صفحه دیگری قرار دهید، یا زمانی که به سایت کارت ویزیت می روید، هر بار بلوک های مختلف اطلاعات را به ترتیب متفاوت به کاربران نشان دهید، بسیار راحت است.

در این مورد، رابطه کلید-مقدار حفظ نمی شود. یعنی آرایه ای که ما در مثال قبل استفاده کردیم، شخصا برای من به شکل زیر درآمد:

آرایه ( => student10 => student5 => student1)

علاوه بر این، پس از هر فراخوانی تابع، ترتیب عناصر متفاوت خواهد بود.

عملکردهایی که قبلاً توسط ما در نظر گرفته شد بسیار ساده هستند و مکانیسم کار آنها واضح است. یک آرایه به عنوان یک پارامتر ارسال می شود که محتوای آن باید بر اساس مقادیر عناصر آن و همچنین پرچمی که می تواند رفتار مرتب سازی را تغییر دهد مرتب شود (شما می توانید با خیال راحت بدون آن انجام دهید).

در بین برنامه نویسان، بسیار محبوب است، زیرا. به شما اجازه می دهد تا هر کار مربوط به مرتب سازی (با استفاده از انواع الگوریتم ها) را با کمک تابع آن حل کنید.

یکی از این وظایف است phpدر قسمت مورد نیاز

برای اینکه به صورت بصری نحوه عملکرد توابع زیر را به شما نشان دهیم، برای مثال، آرایه زیر را در نظر بگیرید:

آرایه ( => آرایه ( => 32) => آرایه ( => 11) => آرایه ( => 27))

همانطور که می بینید، چند بعدی است، زیرا عناصر آن آرایه هایی هستند که ساختار آنها یکسان است: همه آنها یک فیلد با کلید "id" دارند. و اکنون وظیفه ما این است که این عناصر را به ترتیب صعودی مرتب کنیم، یعنی. به طوری که عناصر موجود در آرایه اصلی مطابق با مقدار فیلدهای زیرآرایه ها قرار می گیرند.

نیازی به گفتن نیست که این یک مشکل نسبتاً رایج است. توابع زیر به ما در حل آن کمک می کنند:

usort($array، 'function');- تابع PHP برای مرتب سازی یک آرایه چند بعدی بر اساس فیلد مورد نظر.

به شما امکان می دهد عناصر یک آرایه php را بدون حفظ رابطه کلید-مقدار مطابق با یک تابع تعریف شده توسط کاربر، که نام آن به عنوان پارامتر دوم هنگام فراخوانی usort ارسال می شود، مرتب کنید.

خود تابع به طور جداگانه توضیح داده شده است. برای مثال، برای مرتب کردن عناصر یک آرایه php چند بعدی بر اساس فیلد ['id'] به ترتیب صعودی، تابع سفارشی به شکل زیر خواهد بود:

تابع myCmp($a, $b) ( if ($a["id"] == $b["id"]) بازگشت 0؛ بازگشت $a["id"] > $b["id"] ? 1 : -یک؛ )

تنها چیزی که اکنون برای شروع مرتب سازی نیاز داریم این است که با usort ($array, 'myCmp'); در جای مناسب کد نام متغیر آرایه را به عنوان اولین پارامتر مشخص می کند.

در نتیجه موارد زیر را دریافت خواهیم کرد:

آرایه ( => آرایه ( => 11) => آرایه ( => 27) => آرایه ( => 32))

uasort($array، 'function');- یک تابع php دیگر برای مرتب سازی یک آرایه چند بعدی بر اساس فیلد مورد نظر.

شبیه به usort عمل می کند، اما یک رابطه کلید-مقدار را حفظ می کند و آن را برای مرتب سازی آرایه های انجمنی چند بعدی مناسب می کند.

تابع سفارشی برای مثال ما یکسان خواهد بود. نتایج اجرای آن به صورت زیر خواهد بود:

آرایه ( => آرایه ( => 11) => آرایه ( => 27) => آرایه ( => 32))

برای تغییر ترتیب مرتب‌سازی عناصر و ایجاد برخی تبدیل‌های داده‌های اضافی، لازم است تابع سفارشی را ویرایش کنید، همانطور که ممکن است خودتان حدس بزنید.

به عنوان مثال، اگر آرایه‌های شما، که عناصر منبع هستند، حاوی یک فیلد ['name'] با مقدار رشته باشند، یک تابع سفارشی برای مرتب‌سازی آرایه php چند بعدی بر اساس این فیلد به ترتیب صعودی به صورت زیر خواهد بود:

تابع myCmp($a, $b) ( if (strcasecmp($a["name"], $b["person"]["name"]) == 0) بازگشت 0؛ برگرداندن strcasecmp($a["name "]، $b["name"]) > 0 ? 1: -1؛ )

مرتب‌سازی آرایه‌های php با استفاده از توابع سفارشی ساده‌ترین گزینه نیست، اما در سفارشی‌سازی بسیار انعطاف‌پذیر است و اگر به آن مسلط باشید، راه‌حل مورد علاقه‌تان خواهد شد.

array_multisort ($array1, $array2, $flag);- در پایان، من وحشتناک ترین و مبهم ترین تابع php را برای مرتب سازی یک آرایه ذخیره کردم. دو آرایه به عنوان ورودی و همان پرچم های مرتب سازی را می گیرد که می توانید با توابع مرتب سازی مشخص کنید. Array_multisort به صورت زیر عمل می کند: پارامتر اول آرایه ای است که باید مرتب شود، دومین آرایه ترتیب مرتب سازی آرایه اول است، پس از آن آرایه دوم بر اساس قیاس با آرایه اول مرتب می شود. به جای آرایه ای که ترتیب مرتب سازی را نشان می دهد، می توانید از ثابت های SORT_DESC برای مرتب کردن آرایه به ترتیب نزولی و SORT_ASC به ترتیب صعودی استفاده کنید. به همه این سردرگمی ها، همچنان می توانید پرچم های مرتب سازی را اضافه کنید که می توانند بعد از همه آرایه ها بیایند.

$books = آرایه (32، 11، 27); $sort_array = آرایه (1، 2، 3); array_multisort ($books, $sort_array);

در این مثال، من یک آرایه ساده یک بعدی $books را بر اساس آرایه $sort_array مرتب کرده ام. در نتیجه، آرایه اول به شکل زیر درآمد:

آرایه (=> 11 => 27 => 32)

و دومی به این صورت بود:

آرایه (=> 2 => 3 => 1)

یعنی طبق اولی مرتب شده است. اینم همچین جعفری 🙂

در ویدیوی بعدی درباره array_multisort بیشتر بدانید. همچنین در آنجا نمونه های دیگری از کاربرد آن را خواهید یافت:

این تابع همچنین می تواند برای مرتب سازی آرایه های چند بعدی استفاده شود:

$books = آرایه(آرایه(32)، آرایه(11)، آرایه(27)); $sort_array = آرایه (1، 2، 3); array_multisort ($books, $sort_array);

آرایه $books به شکل زیر خواهد بود:

آرایه ( => آرایه ( => 11) => آرایه ( => 27) => آرایه ( => 32))

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

در اینجا یک چنین "گلوله برفی" در php وجود دارد.

هنگام مرتب سازی یک آرایه php با استفاده از این تابع، رابطه کلید-مقدار برای آرایه های انجمنی حفظ می شود، اما نه برای آرایه های عددی.

برنامه نویسانی که عملکرد توابع مختلف را آزمایش کرده اند، توجه داشته اند که هنگام مرتب سازی یک آرایه چند بعدی، php array_multisort نتایج بهتری نسبت به usort نشان می دهد.

اما array_multisort قادر به انجام تمام کارهایی که usort می تواند انجام دهد نخواهد بود. مثلا همینطور مرتب سازی یک آرایه چند بعدیphp بر اساس فیلد مورد نیاز. بنابراین در هر مورد جداگانه، باید شانس موفقیت خود را هنگام استفاده از یک یا آن طرح تجزیه و تحلیل کنید.

شخصاً می توانم بگویم که array_multisort را کمی دوست ندارم به دلیل پیچیدگی آن و افزایش فشار مغزی که با تلاش برای نمایش آرایه نهایی مرتب شده با آن همراه است.

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

توابعی که قبلاً در مورد آنها صحبت کردیم به شما امکان می دهد آرایه ها را در php بر اساس مقدار عناصر مرتب کنید. بیایید در مورد چگونگی انجام یک عمل مشابه در کلیدهای عنصر صحبت کنیم.

توابع PHP برای مرتب کردن آرایه بر اساس کلید

قبل از اینکه به بررسی اجمالی کارکردهای این گروه بپردازیم، می خواهم بگویم که همه آنها یک چیز مشترک دارند - همه آنها یک رابطه کلید و ارزش را حفظ می کنند. در غیر این صورت، در واقع، نمی تواند باشد، زیرا. در آن صورت آنها منطقی نخواهند بود.

چنین ویژگی است. بیایید هر تابع را با جزئیات بیشتری در نظر بگیریم.

ksort($array, $flag);- تابع یک آنالوگ از asort است، فقط ترتیب عناصر در آرایه نه با مقادیر، بلکه توسط کلیدها انجام می شود.

این ساختار دارای دو پارامتر ورودی است: یک آرایه php که باید مرتب شود و یکی از پرچم های مرتب سازی، لیست کاملی از آنها را می توانید در توضیحات تابع مرتب سازی بیابید (اختیاری است). این تابع php به شما این امکان را می دهد که یک آرایه را به ترتیب صعودی مرتب کنید.

برای نشان دادن کار او، بیایید به مثالی که در همان ابتدای مقاله توضیح داده شد بازگردیم:

آرایه (=> 11 => 18 => 9)

اگر آن را با استفاده از ksort مرتب کنید، در نتیجه شکل زیر را به خود می گیرد:

آرایه (=> 18 => 9 => 11)

فکر می کنم همه چیز ساده و واضح است.

krssort ($array, $flag);- یک تابع دیگر php برای مرتب سازی آرایه بر اساس کلید، بسیار شبیه به قبلی.

تنها تفاوت این است که آرایه php را به ترتیب نزولی مرتب می کند. یعنی آنتاگونیست ksort است، همانطور که rsort برای sort است.

همچنین دارای دو پارامتر ورودی است: آرایه ای که باید مرتب شود و یکی از کلیدها. پس از اجرای آن، مثال ما به شکل زیر خواهد بود:

آرایه (=> 11 => 9 => 18)

به نظر من نظرات لازم نیست 🙂

ukrsort($array، 'function');- یک آنالوگ از تابع php که قبلا ذکر شد برای مرتب سازی آرایه بر اساس کلید - usort.

بر اساس همان اصل کار می کند: رابطه کلید-مقدار را حفظ می کند و آرایه php بر اساس تابع تعریف شده توسط کاربر مرتب می شود که نام آن به عنوان پارامتر دوم ارسال می شود. پارامتر اول تغییر ناپذیر است - آرایه ای است که باید مرتب شود.

تفاوت با usort این است که مرتب سازی توسط کلیدهای عنصر انجام می شود.

بیایید از مثال زیر برای توضیح نحوه عملکرد این تابع استفاده کنیم:

آرایه (=> 40 => 0 => 10)

برای مثال، باید یک آرایه php را بر اساس کلید به ترتیب صعودی مرتب کنیم. در این مورد، تابع سفارشی به شکل زیر خواهد بود:

تابع myCmp($a, $b) (اگر ($a == $b) 0 را برگردانید؛ $a را برگردانید< $b ? 1: -1; }

در نتیجه آرایه ما به شکل زیر خواهد بود:

آرایه ( => 0 => 10 => 40)

مزیت قطعی استفاده از این تابع این است که می توان از آن برای مرتب کردن آرایه php بر اساس برخی ویژگی ها یا الگوریتم های غیر معمول استفاده کرد.

به شما یادآوری می کنم که فقط زمانی باید از آن استفاده کنید که کلیدهای عناصر آرایه نوعی بار معنایی را حمل می کنند. در غیر این صورت، بهتر است از usort یا سایر توابع ساده تر استفاده کنید.

بنابراین مقاله ما به پایان رسیده است (مثلاً اگر تا اینجا خوانده اید) 🙂

در آن سعی کردم به ساده ترین شکل ممکن و در عین حال واضح و کامل تمام راه های ممکن برای مرتب سازی انواع آرایه ها در php را شرح دهم و کلمات خود را با مثال ها تقویت کنم.

اعتراف می کنم که این نشریه برای یک بار خواندن بسیار حجیم و دشوار بود. اما هر بار که نیاز دارید مرتب سازی آرایه پی اچ پی، همیشه می توانید برای توضیح عملکرد مورد نیاز خود به این مقاله مراجعه کنید و نمونه هایی از کاربرد آن را مشاهده کنید.

امیدوارم اطلاعات براتون مفید بوده باشه 🙂

مشترک شدن در به روز رسانی پروژه و

برترین مقالات مرتبط