လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> UKSARS ကိုအသုံးပြုသောအခါတူညီသောသော့များကိုပြန်လည်ပြင်ဆင်ခြင်းကိုမည်သို့ရှောင်ရှားရမည်နည်း

UKSARS ကိုအသုံးပြုသောအခါတူညီသောသော့များကိုပြန်လည်ပြင်ဆင်ခြင်းကိုမည်သို့ရှောင်ရှားရမည်နည်း

gitbox 2025-05-31

1 ။ UKSARE () function ကိုမိတ်ဆက်

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
)

2 ။ ပြ problem နာဖော်ပြချက်: တူညီသောသော့ဖြင့်ဖြစ်ရတဲ့ထပ်ခါတလဲလဲ sorting

အဓိကသော့ချက်သည်ကြိုတင်မဆိုကြိုတင်ကာကွယ်ခြင်းသို့မဟုတ်မြေပုံရေးဆွဲခြင်းအချို့ကိုခံနိုင်ရည်ရှိပါကအခြားသော့များကို "တူညီသောသော့များ" ဟုသတ်မှတ်နိုင်သည်။ ဤအချိန်တွင်နှိုင်းယှဉ်ခြင်း 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 များအတွက်ဤအထပ်ထပ်သိသိသာသာထိရောက်မှုလျော့နည်းစေသည်။

3 ။ ထပ်ခါတလဲလဲ sorting ရှောင်ရှားရန်၏အဓိကစိတ်ကူး

ထပ်ခါတလဲလဲမျိုးကွဲကိုရှောင်ရှားရန်သော့ချက်သည် နှိုင်းယှဉ်ခြင်း function တွင်တူညီသော "ယုတ္တိရှိသောသော့" ၏ထပ်ခါတလဲလဲတွက်ချက်မှုများကိုလျှော့ချရန် နှင့် အလားတူသော့များ၏မလိုအပ်သောနှိုင်းယှဉ်ချက်များကိုပင်လျှော့ချရန်ဖြစ်သည် ။ ဘုံအလေ့အကျင့်များမှာ:

  1. cache မြေပုံရေးဆွဲခြင်း - နှိုင်းယှဉ်ခြင်း function သည်အဓိကမြေပုံရေးဆွဲထားသောတန်ဖိုးများကိုထပ်ခါတလဲလဲတွက်ချက်ခြင်းမှရှောင်ရှားရန်ငြိမ်ဝီယာ cache ကိုအသုံးပြုသည်။

  2. ပထမ ဦး စွာသော့များကိုကြိုတင်စီမံခန့်ခွဲခြင်းနှင့် depproplication - မြေပုံစားပွဲတစ်ခုဖန်တီးပါ, သော့များကို ခွဲခြား. ၎င်းတို့ကိုမြေပုံရေးဆွဲသောအခါတိုက်ရိုက်နှိုင်းယှဉ်ပါ။

  3. Auxilary Array sorting ကိုသုံးပါ ။ မြေပုံရေးဆွဲထားသောတန်ဖိုးများကိုအရန်သော့များအဖြစ်အသုံးပြုပါ။ ထို့နောက်ထပ်ခါတလဲလဲခေါ်ဆိုမှုများကိုရှောင်ရှားရန် array_multisort () သို့မဟုတ်အခြား sorting functions များကိုသုံးပါ။

4 ။ တိကျတဲ့အကောင်အထည်ဖော်မှုဥပမာ

ဖြေရှင်းချက် 1 - cache cache မြေပုံများကို function များအတွင်းနှိုင်းယှဉ်ခြင်း

 $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) စစ်ဆင်ရေးသည်တစ်ကြိမ်သာပြုလုပ်ပြီးထပ်ခါတလဲလဲတွက်ချက်မှုများကိုရှောင်ရှားခြင်းနှင့်စွမ်းဆောင်ရည်ကိုတိုးတက်အောင်ပြုလုပ်ခြင်းကိုတစ်ကြိမ်သာပြုလုပ်သည်။

Solution 2 - Mapprocessing Mapping Mapping Mappening Mappening

 $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 တွင်လုပ်ဆောင်မှုများကိုနှိုင်းယှဉ်ရန်ခေါ်ဆိုမှုများစွာကိုရှောင်ရှားနိုင်ပြီးမြေပုံရေးဆွဲခြင်းစည်းမျဉ်းများသည်ရှုပ်ထွေးသည့်အခါအသုံးပြုရန်သင့်လျော်သည်။


5 ။ အကျဉ်းချုပ်

  • UKSARS ကို အသုံးပြုသောအခါ, နှိုင်းယှဉ်ခြင်း function ကိုအကြိမ်ပေါင်းများစွာဟုခေါ်သည်။

  • နှိုင်းယှဉ်မှု function များကိုနှိုင်းယှဉ်ခြင်း function များကိုနှင့်နှိုင်းယှဉ်လျှင်သိုလှောင်ခြင်းများကိုအသုံးပြုခြင်းအားဖြင့်ထပ်ခါတလဲလဲ sorting ကိုထိထိရောက်ရောက်ရှောင်ရှားနိုင်သည်။

  • မည်သည့်ဖြေရှင်းချက်ကိုရွေးချယ်ရန်အတွက်ပြင်ဆင်မှုစည်းမျဉ်းစည်းကမ်းများနှင့်စွမ်းဆောင်ရည်ဆိုင်ရာလိုအပ်ချက်များကိုပေါ်တွင်မူတည်သည်။

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