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