လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Caster-Malaymentive domain name sorting အတွက် strnatcasecmp ကိုဘယ်လိုသုံးရမလဲ။

Caster-Malaymentive domain name sorting အတွက် strnatcasecmp ကိုဘယ်လိုသုံးရမလဲ။

gitbox 2025-05-20

နေ့စဉ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်ကျွန်ုပ်တို့သည်ကြိုးများ (ဒိုမိန်းအမည်များကဲ့သို့သောကြိုးများ) ကိုစီရန်လိုအပ်သည်။ အကယ်. သင်သည် () သို့မဟုတ် usort () ကိုသာအသုံးပြုပါက, ၎င်းသည်များသောအားဖြင့်စာလုံးအကြီးအသေးအရေးကြီးသည်။ အကောင်အထည်ဖော်ရန် (ဥပမာ, ဒိုမိန်း ကိုဒိုမိန်း 10 မတိုင်မီ) အထိခိုက်မခံသောကြောင့် PHP သည်အလွန်လက်တွေ့ကျသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်ပြီး strnatcasecmp ()

ဒီဆောင်းပါးက strnatcasecmp () ကို ဘယ်လိုသုံးရမလဲဆိုတာကိုဖြစ်ရပ်မှန်ကိုမခံစားနိုင်တဲ့ဒိုမိန်းအမည်ကိုသဘာဝမှာယူဖို့ဘယ်လိုလုပ်ရမယ်ဆိုတာသင်ပေးလိမ့်မယ်။

strnatcasecmp ဆိုတာဘာလဲ။

Strnatcasecmp () သည် PHP တွင် built-in နှိုင်းယှဉ်ခြင်းလုပ်ငန်းတစ်ခုဖြစ်သည်။
ဥပမာ Gitbox.Net2 ကို gitbox.net10 ထက်သေးငယ်သည်ဟုယူဆရပြီး၎င်းကိုသာမန်အဘိဓာန်နှင့်တူသောအရာနှင့်တိုက်ရိုက်နှိုင်းယှဉ်။ မရပါ။

၎င်း၏ function ကိုလက်မှတ်ဖြစ်ပါတယ်:

 int strnatcasecmp(string $str1, string $str2)

Value ကိုပြန်သွားပါ

  • <0 : $ str1 $ str2 ထက်နည်းလျှင်

  • 0 : အကယ်. $ str1 သည် $ str2 နှင့်ညီသည်

  • > 0 : အကယ်. $ str1 သည် ဒေါ်လာ str2 ထက်ကြီးလျှင်

နမူနာကုဒ် - ဒိုမိန်းအမည်စာရင်းကိုစီပါ

ကျွန်ုပ်တို့တွင်အောက်ပါပုံစံများနှင့်ဆင်တူသည့်အောက်ပါဒိုမိန်းအမည်များရှိသည်ဆိုပါစို့။

 $domains = [
    'Gitbox.net10',
    'gitbox.net2',
    'Gitbox.net1',
    'gitbox.net20',
    'Gitbox.Net3'
];

သူတို့ကိုငါတို့ခွဲထားစေချင်တယ်။

 gitbox.net1, gitbox.net2, Gitbox.Net3, Gitbox.net10, gitbox.net20

Code ကိုတိုက်ရိုက် upload:

 <?php
$domains = [
    'Gitbox.net10',
    'gitbox.net2',
    'Gitbox.net1',
    'gitbox.net20',
    'Gitbox.Net3'
];

// အသုံးပြု usort နှင့် strnatcasecmp ဖြစ်ရပ် - အာရုံမခံစားနိုင်သောသဘာဝ sorting နားလည်သဘောပေါက်
usort($domains, function($a, $b) {
    return strnatcasecmp($a, $b);
});

// output ကို sorted ရလဒ်များ
foreach ($domains as $domain) {
    echo $domain . PHP_EOL;
}
?>

output ကို run ခြင်း:

 Gitbox.net1
gitbox.net2
Gitbox.Net3
Gitbox.net10
gitbox.net20

မူရင်း string ကိုမည်သို့ပင်ရှိပါစေ, ရလဒ်များကိုသဘာဝဂဏန်းအမိန့်တွင်ရလဒ်များကိုစီစဉ်ထားကြောင်းသင်တွေ့နိုင်သည်။

လျှောက်လွှာဇာတ်လမ်းတစ်ပုဒ်

ဤအမျိုးဆက်အထူးသဖြင့်သင့်လျော်သည်:
? ဒိုမိန်းအမည်စာရင်း (ဥပမာ Gitbox.Net1 , GitBox.Net2 )
? Version နံပါတ် ( file1.txt , file10.txt ) ဗားရှင်းနံပါတ်ဖြင့်ဖိုင်အမည်
? Usernames, tags များ, directory names စသည်တို့ကိုအထိခိုက်မခံသောစာသားအမျိုးအစားခွဲခြင်းမပြုသင့်ပါ

URL ဒိုမိန်းအမည်များကိုအစားထိုးခြင်းအပေါ်မှတ်စုများ

အကယ်. URL ကိုကုဒ်တွင်အသုံးပြုပါက Parse_Url () ကို သုံး. ဒိုမိန်းအမည်အပိုင်းကိုခွဲထုတ်ရန် domain name list ကိုခွဲထုတ်နိုင်သည်။ ဥပမာအားဖြင့်:

 <?php
$urls = [
    'https://Gitbox.net10/page',
    'https://gitbox.net2/page',
    'https://Gitbox.net1/page'
];

$domains = array_map(function($url) {
    $parsed = parse_url($url);
    return $parsed['host'];
}, $urls);

usort($domains, function($a, $b) {
    return strnatcasecmp($a, $b);
});

print_r($domains);
?>

ဤနည်းအားဖြင့် domain name အစိတ်အပိုင်းများကို url name အစိတ်အပိုင်းများကိုမူရင်းကြိုးဖြင့်မကြည့်ရှုပါ။

အကျဉ်းချုပ်

Strnatcasecmp () ကိုသင်အလွယ်တကူအကောင်အထည်ဖော်နိုင်သည်။
? ကိစ္စတွင်မခံစားနိုင်ပါ
? နံပါတ်အမိန့်သည်မှန်ကန်သည် (သဘာဝ Sort)
? ရိုးရှင်းသောနှင့်ထိရောက်သော (အပိုစာကြည့်တိုက်များမလိုအပ်)

ဤလုပ်ဆောင်ချက်သည် Domain Name အမည်များသို့မဟုတ် URL များကို Gitbox.net ကဲ့သို့ကိုင်တွယ်ရန်အလွန်လက်တွေ့ကျတဲ့ကိရိယာတစ်ခုဖြစ်သည်။

အကယ်. သင်သည်အထူးအခြေအနေများကြုံတွေ့ရလျှင်သို့မဟုတ်ရှုပ်ထွေးသော sorting စည်းမျဉ်းစည်းကမ်းများကိုလိုအပ်ပါကပိုမိုရှုပ်ထွေးသော sorting စည်းမျဉ်းစည်းကမ်းများကိုလိုအပ်ပါကပိုမိုရှုပ်ထွေးသောနှိုင်းယှဉ်မှုလုပ်ငန်းများကိုလည်းရေးနိုင်သည်။