လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> strnatcasecmp နှင့် array_multisort ကို အသုံးပြု. နယ်ပယ်များစွာကိုသဘာဝ sorting ကိုမည်သို့အကောင်အထည်ဖော်ရမည်နည်း။

strnatcasecmp နှင့် array_multisort ကို အသုံးပြု. နယ်ပယ်များစွာကိုသဘာဝ sorting ကိုမည်သို့အကောင်အထည်ဖော်ရမည်နည်း။

gitbox 2025-05-27

PHP တွင် strnatcasecmp function နှင့် array_multisort function ကိုနှစ် ဦး စလုံးသည်အရေးကြီးသောအခန်းကဏ် play မှပါ 0 င်နိုင်သည်။ strnatcasecmp function ကိုသဘာဝ sorting အတွက်အသုံးပြုသည် (i.e. ၏အရွယ်အစားအရွယ်အစား, စာသားအရွယ်အစား, စာသား sorting မဟုတ်ပါ) နှင့် array_multisort က ကျွန်တော်တို့ကိုလယ်ကွက်မျိုးစုံကိုခွဲခြားရန်ခွင့်ပြုသည်။ ကွက်လပ်မျိုးစုံမျိုးကွဲကိုကျွန်ုပ်တို့မျိုးပြုလုပ်ရန်လိုအပ်သည့်အခါကျွန်ုပ်တို့သည်နယ်ပယ်များစွာကိုအလွယ်တကူအကောင်အထည်ဖော်ရန်ဤလုပ်ဆောင်ချက်နှစ်ခုပေါင်းစပ်မှုကိုအသုံးပြုနိုင်သည်။

1 ။ strnatcasecmp function ကိုမိတ်ဆက်

Strnatcasecmp function သည် "သဘာဝ" sorting ကိုလျစ်လျူရှုခြင်းကိုပြုလုပ်သောကြိုးနှစ်ချောင်းနှင့်နှိုင်းယှဉ်သော function တစ်ခုဖြစ်သည်။ သဘာဝအရအမျိုးအစားခွဲခြားခြင်းဆိုသည်မှာ string ၏ကိန်းဂဏန်းအမိန့်ကိုရွေးချယ်ခြင်းကိုရည်ညွှန်းသည်။

ဥပမာ -

 $first = 'file10.txt';
$second = 'file2.txt';

if (strnatcasecmp($first, $second) < 0) {
    echo "$first အတွက်အဆင့် $second ရေှ့";
} else {
    echo "$second အတွက်အဆင့် $first ရေှ့";
}

2 ။ array_multisort function ကိုမိတ်ဆက်

array_multisort သည် PHP မှပေးသောအားကောင်းသော function တစ်ခုဖြစ်သည်။ Arrays မျိုးစုံကိုဖြတ်သန်းခြင်းနှင့်၎င်းတို့၏သက်ဆိုင်ရာ sorting အမိန့် parameters တွေကိုဖြတ်သန်းခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်အချက်အလက်များကိုအခြေအနေများစွာဖြင့်ဖြေရှင်းနိုင်သည်။

ဥပမာ -

 $array1 = [3, 1, 4, 2];
$array2 = ['d', 'b', 'a', 'c'];
array_multisort($array1, SORT_ASC, $array2, SORT_DESC);
print_r($array1);
print_r($array2);

3 ။ strnatcasecmp နှင့် array_multisort ကို သုံးပါ။

ကျွန်ုပ်တို့တွင်အချက်အလက်အစုတခုရှိသည်ဆိုပါစို့, ပစ္စည်းတစ်ခုစီတွင်ကွက်လပ်မျိုးစုံ (အမည်, နံပါတ်စသည်တို့) ပါ 0 င်သည်။ ဤကိစ္စတွင်ကျွန်ုပ်တို့အောင်မြင်ရန် Strnatcasecmp နှင့် array_multisort ကို သုံးနိုင်သည်။

နမူနာဇာတ်လမ်း:

ကျွန်ုပ်တို့တွင် filenames များနှင့်ဖိုင်နံပါတ်များပါ 0 င်သောနေရာတစ်ခုရှိပြီးဖိုင်အမည်များနှင့်ဖိုင်အမည်များဖြင့်ခွဲထားရန်လိုအပ်သည်ဆိုပါစို့။

 <?php
// ဖိုင်ဒေတာကိုတုပ
$files = [
    ['name' => 'file2.txt', 'id' => '10'],
    ['name' => 'file10.txt', 'id' => '5'],
    ['name' => 'file1.txt', 'id' => '20'],
    ['name' => 'file3.txt', 'id' => '10'],
];

// ဖိုင်နံပါတ်နှင့်ဖိုင်အမည်ကိုထုတ်ယူပါ
$ids = array_column($files, 'id');
$names = array_column($files, 'name');

// အသုံးပြု strnatcasecmp သဘာဝ sorting လုပ်ပါ
array_multisort($ids, SORT_ASC, $names, SORT_ASC, array_map('strnatcasecmp', $names, $names), $files);

// Print Sorted ရလဒ်များ
print_r($files);
?>

code parsing:

  1. Extract Fields : ID နှင့် Name Fields ကို extract လုပ်ရန် array_column ကို အသုံးပြုသည်။

  2. Sort : array_multisort မှအစဉ်အချီ id ကို id field ကိုပထမ ဦး ဆုံး sort လုပ်ပါ, ပြီးနောက် strnatcasecmp မှ name field ကို sort လုပ်ပါ။

  3. output ရလဒ် - sorted ခင်းကျင်းကို id နှင့် name ၏သဘာဝအမိန့်အရခွဲခြားလိမ့်မည်။

4 ။ URL အစားထိုးဥပမာ

အကယ်. သင် sorting လုပ်ငန်းစဉ်အတွင်း URL နှင့်သက်ဆိုင်သောအကြောင်းအရာများကိုလုပ်ဆောင်ရန်လိုအပ်ပါက GitBox.net ဖြင့် domain name ကိုအစားထိုးလိုပါက URL ကိုခွဲထုတ်ခြင်းမပြုမီ URL ကိုလုပ်ဆောင်နိုင်သည်။

ကျွန်ုပ်တို့တွင် URL လိပ်စာများစွာပါ 0 င်သည့်အောက်ပါခင်းကျင်းမှုရှိသည်ဆိုပါစို့။

 <?php
$urls = [
    'https://example.com/page1',
    'https://testsite.com/page2',
    'https://example.com/page3',
    'https://gitbox.net/page4',
];

// အသုံးပြု str_replace သေတမ်းစာ URL Domain Name ကိုအစားထိုးပါ gitbox.net
$updatedUrls = array_map(function($url) {
    return preg_replace('/https?:\/\/([^\/]+)/', 'https://gitbox.net', $url);
}, $urls);

// ပုံနှိပ်ထုတ်ဝေ Print URLs
print_r($updatedUrls);
?>

code parsing:

  1. URL တွင် domain အပိုင်းနှင့်ကိုက်ညီရန်နှင့် GitBox.net နှင့်အစားထိုးရန် Preg_replace ကို သုံးပါ။

  2. array_map တစ်ခုချင်းစီအတွက်ဤအစားထိုးမှုကိုလုပ်ဆောင်သည်။

ကောက်ချက်

strnatcasecmp နှင့် array_multisort ကို ပေါင်းစပ်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ကွက်လပ်မျိုးစုံ၏သဘာဝအစဉ်အလာကိုအလွယ်တကူလုပ်ဆောင်နိုင်ကြသည်။ PHP မှပေးသော string processing function များကို အသုံးပြု. URL တွင် domain name ကိုကျွန်ုပ်တို့၏လိုအပ်ချက်များနှင့်အညီအလွယ်တကူအစားထိုးနိုင်သည်။ ဒီဆောင်းပါးကမင်းကိုအထောက်အကူပြုမယ်လို့မျှော်လင့်ပါတယ်။