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
ကျွန်ုပ်တို့သည် 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