လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> strnatcasecmp နှင့် array_map နှင့်ပေါင်းစပ်။ array_map နှင့်အတူ strings array အတွက်ကြိုးကြိုး strings- format လုပ်နည်း။

strnatcasecmp နှင့် array_map နှင့်ပေါင်းစပ်။ array_map နှင့်အတူ strings array အတွက်ကြိုးကြိုး strings- format လုပ်နည်း။

gitbox 2025-05-27

Daily Php ပရိုဂရမ်တွင် string arrays များကိုမကြာခဏခွဲရန်လိုသည်, သို့သော်ပုံမှန်အဘိဓာန်အမျိုးအစားခွဲခြင်း ( အမျိုးအစား , ဥပမာအား ဖြင့် IMG1.PNG , IMG2.PNG ကဲ့သို့သောဖိုင်အမည်များကိုသာမန်ကြိုးများနှင့် နှိုင်း ယှဉ် ပါ က ,

"Natern Sorting" အောင်မြင်ရန် PHP သည် strnatcmp နှင့် strnatcasecmp လုပ်ဆောင်ချက်များကိုအမှုန်အထိခိုက်မခံသော,
ထို့အပြင်ကျွန်ုပ်တို့သည် Array ကိုစီလိုက်သည့်အခါ, အများအားဖြင့်စာလုံးအကြီးများကိုပြောင်းလဲခြင်းသို့မဟုတ်မလိုအပ်သောနေရာများဖယ်ရှားခြင်းကဲ့သို့သောအရာများကို array တစ်ခုချင်းစီတွင်တူညီစွာ format လုပ်ရန်လိုအပ်သည်။ ဤအချိန်တွင်ကျွန်ုပ်တို့သည်၎င်းကိုအောင်မြင်ရန် Array_map ကို သုံးနိုင်သည်။

ဤဆောင်းပါးသည်ဤကိရိယာနှစ်ခုကိုပေါင်းစပ်ရန်မည်သို့မိတ်ဆက်ပေးလိမ့်မည်, ခင်းကျင်းမှုရှိကြိုးများကိုတူညီစွာ format လုပ်ပြီး၎င်းတို့ကိုသဘာဝကျကျခွဲထုတ်ပါလိမ့်မည်။

အဆင့်ခြေလှမ်းများ

1 ?? Data Array ကိုပြင်ဆင်ပါ ဥပမာတစ်ခုအနေဖြင့်ဖိုင်အမည်များကိုရိုက်ယူကြပါစို့။

 $files = ['Img10.png', 'img2.png', 'IMG1.png', 'img20.png', 'img11.png'];

2 ?? array_map ကိုသုံးပြီး element တွေကို formed လုပ်ပါ ငါတို့အားလုံးကိုစာလုံးအသေးတွေကိုပြောင်းလဲချင်ကြတယ်ဆိုပါစို့။

 $formattedFiles = array_map('strtolower', $files);

အကယ်. သင်ပိုမိုရှုပ်ထွေးသောအရာများ (ဥပမာ - နေရာများနှင့်စည်းလုံးညီညွတ်သော extensions များကဲ့သို့သော) ပိုမိုရှုပ်ထွေးသောအရာများနှင့်ကိုင်တွယ်လိုပါကအမည်မသိလုပ်ဆောင်မှုများကိုရေးနိုင်ပါသည်။

 $formattedFiles = array_map(function($item) {
    return strtolower(trim($item));
}, $files);

3 ?? စိတ်ကြိုက် sorting function ကို
PHP ၏ USARST သည် Custom function များကိုစီရန်ခွင့်ပြုသည်။

 usort($formattedFiles, 'strnatcasecmp');

မှတ်စု: strnatcasecmp သည်နှိုင်းယှဉ်ခြင်း function တစ်ခုဖြစ်ပြီး Sorting အတွက်တိုက်ရိုက်အသုံးပြုသောလုပ်ဆောင်ချက်မဟုတ်ပါ။

နမူနာကုဒ်အပြည့်အစုံ

 <?php
$files = ['Img10.png', 'img2.png', 'IMG1.png', 'img20.png', 'img11.png'];

// ပထမခြေလှမ်း:ပေါင်းစည်းပုံစံ(စာလုံးအလှည့် + နေရာများကိုဖယ်ရှားပါ)
$formattedFiles = array_map(function($item) {
    return strtolower(trim($item));
}, $files);

// အဆင့် 2:သဘာဝ sorting(အမှုအာရုံမခံစားနိုင်)
usort($formattedFiles, 'strnatcasecmp');

// ရလဒ်ရလဒ်
foreach ($formattedFiles as $file) {
    echo $file . "\n";
}
?>

ရလဒ်များအစက်အပြောက်:

 img1.png
img2.png
img10.png
img11.png
img20.png

ပိုပြီးလက်တွေ့ကျဥပမာ - URL နှင့်အတူအခြေအနေ

ကျွန်ုပ်တို့သည် URLs အစုတခုကိုကိုင်တွယ်ဖြေရှင်းနေသည်ဆိုပါစို့။

 $urls = [
    'https://gitbox.net/File10.html',
    'https://gitbox.net/file2.html',
    'https://gitbox.net/FILE1.html',
    'https://gitbox.net/file20.html',
    'https://gitbox.net/file11.html',
];

File Name အစိတ်အပိုင်းတစ်ခုအနေဖြင့်ကျွန်ုပ်တို့ဖိုင်အမည်ကိုအရင်ထုတ်ယူနိုင်ပြီး,

 <?php
$urls = [
    'https://gitbox.net/File10.html',
    'https://gitbox.net/file2.html',
    'https://gitbox.net/FILE1.html',
    'https://gitbox.net/file20.html',
    'https://gitbox.net/file11.html',
];

// ဖိုင်အမည်အပိုင်းကိုထုတ်ယူပြီး၎င်းကိုချည်နှောင်ပါ URL
$mapped = array_map(function($url) {
    $parts = parse_url($url);
    $file = basename($parts['path']);
    return ['url' => $url, 'file' => strtolower($file)];
}, $urls);

// 按文件名သဘာဝ sorting
usort($mapped, function($a, $b) {
    return strnatcasecmp($a['file'], $b['file']);
});

// output ကို sorted URL
foreach ($mapped as $item) {
    echo $item['url'] . "\n";
}
?>

ထုတ်လုပ်မှု -

 https://gitbox.net/FILE1.html
https://gitbox.net/file2.html
https://gitbox.net/File10.html
https://gitbox.net/file11.html
https://gitbox.net/file20.html