File Name Sorting ကိုကိုင်တွယ်ဖြေရှင်းသည့်အခါ PHP သည် "သဘာဝကျကျခွဲထားသည့်" နည်းလမ်းတစ်ခုတွင်ကြိုးများကိုနှိုင်းယှဉ်ထားနိုင်သည့်အလွန်လက်တွေ့ကျသော function strnatcmp () ကိုထောက်ပံ့ပေးသည်။ ရိုးရာအစဉ်အလာနှင့်မတူသည်နှင့်မတူဘဲသဘာဝ sorting သည် file2.txt ကို file10.txt မတိုင်မီအဆင့်သတ်မှတ်မည်။ နံပါတ်များပါ 0 င်သည့်ဖိုင်အမည်များကိုကိုင်တွယ်သောအခါ၎င်းသည်အထူးသဖြင့်အသုံးဝင်သည်။ ဤဆောင်းပါးသည် strnatcmp ၏အသုံးပြုမှုနှင့် ပတ်သက်. လက်တွေ့ကျသောနည်းစနစ်အချို့နှင့်အများအားဖြင့်ကြိုတင်ကာကွယ်မှုများပြုလုပ်သွားမည်။
strnatcmp () string parameters နှစ်ခုကိုလက်ခံပြီးနှိုင်းယှဉ်မှုရလဒ်ကိုကိုယ်စားပြုရန်ကိန်းတန်ဖိုးကိုပြန်လည်ပေးအပ်သည်။
<?php
echo strnatcmp("file2.txt", "file10.txt"); // ထုတ်လုပ်ခြင်း -1
?>
အမှန်တကယ် sorting တွင်၎င်းကို များသောအားဖြင့်အသုံးပြုလေ့ရှိသည် ()) ဖြင့်အသုံးပြုသည်။
<?php
$files = ["file10.txt", "file2.txt", "file1.txt"];
usort($files, "strnatcmp");
print_r($files);
?>
ထုတ်လုပ်မှု -
Array
(
[0] => file1.txt
[1] => file2.txt
[2] => file10.txt
)
strnatcmp () သည်စာလုံးအကြီးအသေးအရေးကြီးသည်။ အချို့ကိစ္စများတွင်အချို့သောကိစ္စရပ်များတွင်မျှော်လင့်ထားသည့်အတိုင်းမဖြစ်ရန်ဖြစ်နိုင်သည်။ ဥပမာအားဖြင့်:
<?php
$files = ["File2.txt", "file10.txt"];
usort($files, "strnatcmp");
print_r($files);
?>
အမှုအားလျစ်လျူရှုရန် strnatcasecmp () ကို သုံးနိုင်သည်။
<?php
usort($files, "strnatcasecmp");
?>
ဖိုင်လမ်းကြောင်းတွင် ( ပုံများ / file2.jpg နှင့် images2.jpg နှင့် images / file / file )) ကိုအသုံးပြုခြင်းသည် strnatcmp () ကိုအသုံးပြုခြင်းသည် directory directory struction ကိုဖြေရှင်းနိုင်သည်။ ထို့ကြောင့်သင်သည်ဖိုင်အမည်ကိုပထမယူပြီး၎င်းကိုစီလိုက်နိုင်သည်။
<?php
$paths = ["images/file10.jpg", "images/file2.jpg"];
usort($paths, function($a, $b) {
return strnatcmp(basename($a), basename($b));
});
?>
သဘာဝ sorting သည် extension များကို string တစ်ခုအနေဖြင့်ရယူသည်။ အကယ်. သင်သည် Sorting Extension ကိုလျစ်လျူရှုရန်လိုအပ်ပါကနောက်ဆက်ကိုဖယ်ရှားပြီးသင်နှိုင်းယှဉ်နိုင်သည်။
<?php
function strip_extension($filename) {
return pathinfo($filename, PATHINFO_FILENAME);
}
$files = ["image10.png", "image2.jpg"];
usort($files, function($a, $b) {
return strnatcmp(strip_extension($a), strip_extension($b));
});
?>
အစစ်အမှန်ဘဝလျှောက်လွှာများတွင်လမ်းညွှန်များနှင့်ဖိုင်များသည်မကြာခဏအတူတကွရောနှောနေကြသည်။ sorting လုပ်တဲ့အခါ, သင်ဟာ directory ကိုသူတို့ရှေ့မှာရှိနေစေချင်တယ်။ ၎င်းကို is_dir () နှင့် strnatcmp နှင့်ပေါင်းစပ်နိုင်သည်။
<?php
$entries = ["docs", "image2.jpg", "image10.jpg"];
usort($entries, function($a, $b) {
$a_is_dir = is_dir("gitbox.net/files/" . $a);
$b_is_dir = is_dir("gitbox.net/files/" . $b);
if ($a_is_dir && !$b_is_dir) return -1;
if (!$a_is_dir && $b_is_dir) return 1;
return strnatcmp($a, $b);
});
?>
မှတ်စု: is_dir () ကို မှန်ကန်စွာခွဲခြားသိမြင်နိုင်ရန်အတွက်လမ်းကြောင်းသည်အမှန်တကယ်ဖြစ်ရန်လိုအပ်သည်။ အကယ်. ၎င်းသည် virtual path ဖြစ်ခဲ့လျှင်ဖိုင်အမျိုးအစားကိုအခြားနည်းများဖြင့်မှတ်သားနိုင်သည်။
ပိုမိုရှုပ်ထွေးသော Sorting Logic ကိုရရှိရန်အတွက်သဘာဝအစဉ်အလာအမျိုးမျိုး, timestamps များစသဖြင့်ပြုလုပ်နိုင်သည်။ ဥပမာအားဖြင့်, ဖိုင်အမည်များကိုသဘာဝကျကျ sorting လုပ်ပြီးနောက်၎င်းတို့ကိုပြုပြင်မွမ်းမံသည့်အချိန်တွင်အစဉ်အလာတွင်ခွဲထားလော့။
<?php
$files = ["file10.txt", "file2.txt", "file1.txt"];
usort($files, function($a, $b) {
$result = strnatcmp($a, $b);
if ($result === 0) {
return filemtime("gitbox.net/uploads/" . $b) - filemtime("gitbox.net/uploads/" . $a);
}
return $result;
});
?>
ဒစ်ဂျစ်တယ်အစီအစဉ်များ (ဥပမာ screenshots များ, ဗွီဒီယိုဘောင်များ, မှတ်တမ်းများစသဖြင့်ဖိုင်အမည်များဖြင့်ဖိုင်အမည်များ)
အသုံးပြုသူများကိုအလိုလိုသိနားလည်ရန်လိုအပ်သောနည်းလမ်းများကို sorting နည်းလမ်းများ
Directory browser (ဘရောက်ဆာ) များနှင့်ဖိုင်မန်နေဂျာများကဲ့သို့သော interface-friendly applications များ
တင်းကျပ်သောစက်အသိအမှတ်ပြုခြင်း (ဥပမာ hash တန်ဖိုးနှင့် encoding စည်းမျဉ်းများကဲ့သို့)
စာလုံးအကြီးအသေးအရေးမကြီးသောသို့မဟုတ် Non-Standard Naming ဇာတ်လမ်းဖြစ်စဉ်များ
strnatcmp () သည် PHP တွင်သဘာဝ sorting ဖြင့်ကိုင်တွယ်ရန်အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည်။ ၎င်းသည် File Name Sorting ၏အသုံးပြုသူအတွေ့အကြုံကိုသိသိသာသာတိုးတက်စေနိုင်သည်။ ၎င်း၏အသုံးပြုမှုနှင့်ကြိုတင်ကာကွယ်မှုများပြုလုပ်ရာများကိုကျွမ်းကျင်ပိုင်ခွင့်ပြုခြင်းသည်လုပ်ငန်းသုံးစွဲနှင့်သက်ဆိုင်သော application များ၌ကျွန်ုပ်တို့ကိုပိုမိုသက်တောင့်သက်သာဖြစ်စေနိုင်သည်။ အသုံးပြုမှုတွင်အမှုအားလျစ်လျူရှုရန်, ဖိုင်အမည်များကိုကူးယူရန်လိုအပ်ပါသလား, သို့မဟုတ်အမှန်တကယ်ဇာတ်လမ်းတွဲအပေါ် အခြေခံ. အစစ်အမှန်ပါ 0 င်ခြင်းရှိ,