با استفاده از تابع strnatcmp در PHP تابعی بنویسید که یک آرایه از نام فایلها یا شناسههای متنی (مثل "file2.txt" و "file10.txt") را به ترتیب طبیعی مرتب کند و نتیجه را نمایش دهد؟
6.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:13 0.0
برای حل این مسأله میتوانید از usort بهعنوان مرتبساز و strnatcmp بهعنوان callback استفاده کنید تا مقایسه به صورت natural sort انجام شود (مثال: usort($arr, 'strnatcmp')). اگر میخواهید بدون توجه به بزرگصغیر مرتب کنید از strnatcasecmp استفاده کنید. برای نمایش خروجی از print_r یا حلقه foreach استفاده کنید؛ در مواقع پیچیدهتر میتوان با regex بخشهای عددی را استخراج و به عدد تبدیل کرد، اما برای بیشتر کاربردهای متن و آنالیز دادههای ساده، usort + strnatcmp کافی است.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای مرتبسازی طبیعی نام فایلها با PHP، استفاده از usort همراه با strnatcmp انتخاب خوبی است زیرا عددهای درون نامها را بهعنوان مقادیر عددی در نظر میگیرد. اگر حساسیت نسبت به حروف بزرگ و کوچک لازم نیست، میتوانید از strnatcasecmp برای مرتبسازی بدون توجه به بزرگی حروف استفاده کنید. برای نمایش خروجی میتوانید از print_r یا حلقه foreach استفاده کنید تا نتیجه بهدرستی نشان داده شود. اگر با دادههای پیچیدهتر مواجه شدید، میتوانید بخشهای عددی را با regex استخراج و به عدد تبدیل کنید، اما در اکثر موارد استفاده از usort + strnatcmp کارآمد و ساده است.
گزارش