UKSARE (array & $ array, callable $ callback) - bool function သည်ခင်းကျင်းခြင်း၏သော့များကိုစီသည်။ $ callback သည်အသုံးပြုသူ၏သတ်မှတ်ထားသောနှိုင်းယှဉ်မှုတစ်ခုမှာ parameters များအဖြစ်အဓိကအကြောင်းအမည်နှစ်ခုကိုလက်ခံခြင်း, သုညထက်ပိုမိုနည်းပါးသည်,
နမူနာကုဒ်:
$array = [
'apple' => 1,
'banana' => 2,
'cherry' => 3,
];
uksort($array, function($a, $b) {
return strcmp($a, $b);
});
print_r($array);
ထုတ်လုပ်မှု -
Array
(
[apple] => 1
[banana] => 2
[cherry] => 3
)
အဓိကသော့ချက်သည်ကြိုတင်မဆိုကြိုတင်ကာကွယ်ခြင်းသို့မဟုတ်မြေပုံရေးဆွဲခြင်းအချို့ကိုခံနိုင်ရည်ရှိပါကအခြားသော့များကို "တူညီသောသော့များ" ဟုသတ်မှတ်နိုင်သည်။ ဤအချိန်တွင်နှိုင်းယှဉ်ခြင်း function ကိုမကြာခဏနှင့်အကြိမ်ကြိမ်မကြာခဏနှင့်အကြိမ်ကြိမ်ဟုခေါ်ဆိုနိုင်ပါသည်။ ဥပမာအားဖြင့်:
$array = [
'a_1' => 10,
'a_2' => 20,
'b_1' => 30,
];
uksort($array, function($key1, $key2) {
// မျဉ်းကြောင်းမတိုင်မီအပိုင်းကိုနှိုင်းယှဉ်ပါ
$part1 = explode('_', $key1)[0];
$part2 = explode('_', $key2)[0];
return strcmp($part1, $part2);
});
ဤအချက်မှာ 'A_1' နှင့် 'A_2' နှင့် 'A_2' ကို "တူညီသောသော့များ" အဖြစ်သတ်မှတ်ပြီးနှိုင်းယှဉ်ခြင်း function သည်သူတို့ကိုအကြိမ်များစွာနှိုင်းယှဉ်နိုင်သည်။ ကြီးမားသော array များအတွက်ဤအထပ်ထပ်သိသိသာသာထိရောက်မှုလျော့နည်းစေသည်။
ထပ်ခါတလဲလဲမျိုးကွဲကိုရှောင်ရှားရန်သော့ချက်သည် နှိုင်းယှဉ်ခြင်း function တွင်တူညီသော "ယုတ္တိရှိသောသော့" ၏ထပ်ခါတလဲလဲတွက်ချက်မှုများကိုလျှော့ချရန် နှင့် အလားတူသော့များ၏မလိုအပ်သောနှိုင်းယှဉ်ချက်များကိုပင်လျှော့ချရန်ဖြစ်သည် ။ ဘုံအလေ့အကျင့်များမှာ:
cache မြေပုံရေးဆွဲခြင်း - နှိုင်းယှဉ်ခြင်း function သည်အဓိကမြေပုံရေးဆွဲထားသောတန်ဖိုးများကိုထပ်ခါတလဲလဲတွက်ချက်ခြင်းမှရှောင်ရှားရန်ငြိမ်ဝီယာ cache ကိုအသုံးပြုသည်။
ပထမ ဦး စွာသော့များကိုကြိုတင်စီမံခန့်ခွဲခြင်းနှင့် depproplication - မြေပုံစားပွဲတစ်ခုဖန်တီးပါ, သော့များကို ခွဲခြား. ၎င်းတို့ကိုမြေပုံရေးဆွဲသောအခါတိုက်ရိုက်နှိုင်းယှဉ်ပါ။
Auxilary Array sorting ကိုသုံးပါ ။ မြေပုံရေးဆွဲထားသောတန်ဖိုးများကိုအရန်သော့များအဖြစ်အသုံးပြုပါ။ ထို့နောက်ထပ်ခါတလဲလဲခေါ်ဆိုမှုများကိုရှောင်ရှားရန် array_multisort () သို့မဟုတ်အခြား sorting functions များကိုသုံးပါ။
$array = [
'a_1' => 10,
'a_2' => 20,
'b_1' => 30,
'b_2' => 40,
'c_1' => 50,
];
uksort($array, function($key1, $key2) {
static $cache = [];
if (!isset($cache[$key1])) {
$cache[$key1] = explode('_', $key1)[0];
}
if (!isset($cache[$key2])) {
$cache[$key2] = explode('_', $key2)[0];
}
return strcmp($cache[$key1], $cache[$key2]);
});
print_r($array);
ဤနည်းအားဖြင့် exploit ('_', $ key) စစ်ဆင်ရေးသည်တစ်ကြိမ်သာပြုလုပ်ပြီးထပ်ခါတလဲလဲတွက်ချက်မှုများကိုရှောင်ရှားခြင်းနှင့်စွမ်းဆောင်ရည်ကိုတိုးတက်အောင်ပြုလုပ်ခြင်းကိုတစ်ကြိမ်သာပြုလုပ်သည်။
$array = [
'a_1' => 10,
'a_2' => 20,
'b_1' => 30,
'b_2' => 40,
'c_1' => 50,
];
// မြေပုံသော့များကို generate လုပ်ပါ
$mappedKeys = [];
foreach (array_keys($array) as $key) {
$mappedKeys[$key] = explode('_', $key)[0];
}
// သော့ချက်သော့ဖြင့်သော့များကို sort ပါ
uasort($mappedKeys, function($a, $b) {
return strcmp($a, $b);
});
// Sorted Mapping ခလုတ်ကိုအရအဓိကခင်းကျင်းမှုကိုပြန်လည်တည်ဆောက်ပါ
$newArray = [];
foreach ($mappedKeys as $originalKey => $_) {
$newArray[$originalKey] = $array[$originalKey];
}
print_r($newArray);
ဤဖြေရှင်းချက်သည် UKSARD တွင်လုပ်ဆောင်မှုများကိုနှိုင်းယှဉ်ရန်ခေါ်ဆိုမှုများစွာကိုရှောင်ရှားနိုင်ပြီးမြေပုံရေးဆွဲခြင်းစည်းမျဉ်းများသည်ရှုပ်ထွေးသည့်အခါအသုံးပြုရန်သင့်လျော်သည်။
UKSARS ကို အသုံးပြုသောအခါ, နှိုင်းယှဉ်ခြင်း function ကိုအကြိမ်ပေါင်းများစွာဟုခေါ်သည်။
နှိုင်းယှဉ်မှု function များကိုနှိုင်းယှဉ်ခြင်း function များကိုနှင့်နှိုင်းယှဉ်လျှင်သိုလှောင်ခြင်းများကိုအသုံးပြုခြင်းအားဖြင့်ထပ်ခါတလဲလဲ sorting ကိုထိထိရောက်ရောက်ရှောင်ရှားနိုင်သည်။
မည်သည့်ဖြေရှင်းချက်ကိုရွေးချယ်ရန်အတွက်ပြင်ဆင်မှုစည်းမျဉ်းစည်းကမ်းများနှင့်စွမ်းဆောင်ရည်ဆိုင်ရာလိုအပ်ချက်များကိုပေါ်တွင်မူတည်သည်။
အထက်ပါကျွမ်းကျင်မှုများကိုကျွမ်းကျင်ပြီးသည့်နောက်တွင်သင်သည် Uksort () ကို သုံး. ရှုပ်ထွေးသောသော့များကိုပိုမိုပြောင်းလွယ်ပြင်လွယ်နှင့်ထိရောက်စွာအသုံးပြုနိုင်ရန်အသုံးပြုနိုင်သည်။