လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP တွင်ထပ်ခါတလဲလဲ sorting ၏ပြ problem နာကိုဖြေရှင်းရန် Krsort ကိုသုံးပါ

PHP တွင်ထပ်ခါတလဲလဲ sorting ၏ပြ problem နာကိုဖြေရှင်းရန် Krsort ကိုသုံးပါ

gitbox 2025-05-26

PHP တွင် arrays များ, အထူးသဖြင့်ဆန်းစစ်ခြင်းကို sorting arrays (key-value pair perf arrays) များ (Key-value pair တစုံစာရင်း) ကိုမကြာခဏကြုံတွေ့ရလေ့ရှိသည်။ သို့မဟုတ် sorting သည်မျှော်လင့်ချက်များနှင့်မကိုက်ညီပါ။ Krsort သည် PHP တွင် function ကိုသော့ချက်အမည်များဖြင့်ခွဲထုတ်ရန်ဖြစ်သည်။ ၎င်းသည် "သော့မိတ္တူပွားခြင်း" ၏ပြ problem နာကိုဖြေရှင်းနိုင်ပါသလား။ ဤဆောင်းပါးသည်အသေးစိတ်လေ့လာပြီးတိကျသောစစ်ဆင်ရေးဥပမာများကိုပေးလိမ့်မည်။

1 ။ PHP Array ၏အဓိကအကြောင်းရင်း၏ထူးခြားမှု

ပထမ ဦး စွာ PHP Arrays ၏အဓိကအကြောင်းရင်းများသည်ထူးခြားသည်မှာရှင်းနေပါသည်။ အကယ်. သင်သည်မိတ္တူပွားအမည်တစ်ခုကိုအသုံးပြုပါကတန်ဖိုးများကိုခင်းကျင်းရန်သတ်မှတ်သည့်အခါနောက်မှသတ်မှတ်ထားသောတန်ဖိုးသည်ယခင်တစ်ခုကိုထပ်ခါတလဲလဲရေးသားလိမ့်မည်။ ဥပမာအားဖြင့်:

 <?php
$arr = [
    "key1" => "value1",
    "key2" => "value2",
    "key1" => "value3"
];
print_r($arr);
?>

output ရလဒ် -

 Array
(
    [key1] => value3
    [key2] => value2
)

Key1 ကို ထပ်ခါတလဲလဲပြုလုပ်သောအခါ value1 ကို value3 ဖြင့် overwrite လုပ်ထားသည်။

ထို့ကြောင့် PHP Arrays တွင်သော့ချက်များမိတ္တူကူးရန်မဖြစ်နိုင်ပါ , ဆိုလိုသည်မှာသင်သည်ထပ်တူသော့ချက်များရှိသည့်ပြ a နာများရှိသည်ဟုသင်ခံစားရပါက,


2 ။ Krsort ၏အခန်းကဏ်။

krsort function ကို sort (dewisending) ကိုပြောင်းရန်အတွက်သော့ချက်တန်ဖိုး၏အဓိကအကြောင်းရင်းများနှင့်အညီပြောင်းရန်ကိုပြောင်းရန်အသုံးပြုသည်။ function ကိုအဓိပ္ပါယ်ဖွင့်ဆိုချက်ကိုအောက်ပါအတိုင်းဖြစ်သည် -

 bool krsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

ဥပမာ -

 <?php
$arr = [
    "b" => 2,
    "a" => 1,
    "c" => 3
];

krsort($arr);
print_r($arr);
?>

ရလဒ်ရလဒ် -

 Array
(
    [c] => 3
    [b] => 2
    [a] => 1
)

သတိပြုရန်မှာ Krsort သည် သော့များ၏ထူးခြားမှုကိုမထိခိုက်စေကြောင်း သတိပြုပါ။


3 ။ သော့ချက်အမည်များ၏ "မိတ္တူပွား" ၏ပြ problem နာကိုဘယ်လိုဖြေရှင်းမလဲ။

PHP Array ၏ထူးခြားသောလက္ခဏာများကြောင့် "သော့မိတ္တူပွားခြင်းကြောင့်ဖြစ်ပေါ်လာသောပြ problems နာများ" ဟုခေါ်သည့် PHP array ၏ထူးခြားသောလက္ခဏာများကြောင့်ဖြစ်သည်။

  • Multidimensional Array အတွက်ကွဲပြားခြားနားသောအဆင့်ဆင့်မှာအဓိကအကြောင်းရင်းများထပ်ခါတလဲလဲပေမယ့်တူညီတဲ့အဆင့်တွင်ထူးခြားသည်။

  • သင်နယ်ပယ်တစ်ခုအနေဖြင့်ခွဲချင်သော်လည်းသော့ချက်အမည်သည်ထူးခြားသည်မဟုတ်, အချက်အလက်ဖွဲ့စည်းပုံသည်မဆင်ခြင်နိုင်ပါ။

3.1 ဖြေရှင်းနည်းဥပမာ 1 - array keys များကိုပြန်လည်ဖွဲ့စည်းပါ

သင့်တွင် multidimendoal array ရှိပါကအောက်ပါအတိုင်းဖြစ်သည်ဆိုပါက -

 <?php
$arr = [
    ["id" => 1, "name" => "Alice"],
    ["id" => 2, "name" => "Bob"],
    ["id" => 1, "name" => "Charlie"]
];

ဒီမှာ "ID" အတွက်မိတ္တူပွားများရှိပါတယ်။ သင် "ID" field ကို sort ချင်ပါတယ်

 <?php
// အရidပြောင်းပြန်နိုင်ရန်အတွက် sort
usort($arr, function($a, $b){
    return $b['id'] <=> $a['id'];
});

print_r($arr);
?>

ဒါက Krsort နဲ့ဘာမှမဆိုင်ပါဘူး, Krsort ကို အဓိကနာမည်တွေအတွက်သာခွဲထားတယ်။


3.2 ဖြေရှင်းနည်းဥပမာ 2 - ထူးခြားသောသော့ကို အသုံးပြု. ခင်းကျင်းမှုကိုပြန်လည်တည်ဆောက်ပါ

အကယ်. သင်အမှန်တကယ်အမည်များကိုမိတ္တူပွားခြင်းကိုရှောင်ရှားရန်သော့ချက်တစ်ခုအနေဖြင့်လယ်ကွင်းတစ်ခုအဖြစ်အသုံးပြုရန်လိုအပ်ပါကသော့ချက်အမည်များကိုပထမဆုံးစစ်ထုတ်နိုင်သည်သို့မဟုတ် splice လုပ်နိုင်သည်။

 <?php
$arr = [
    ["id" => 1, "name" => "Alice"],
    ["id" => 2, "name" => "Bob"],
    ["id" => 1, "name" => "Charlie"]
];

// ဖြင့်idနှင့်nameထူးခွားတဲ့သော့ချက်အဖြစ်ပေါင်းစပ်
$newArr = [];
foreach ($arr as $item) {
    $key = $item['id'] . '_' . $item['name']; // အာမခံသော့ချက်ထူးခွားတဲ့
    $newArr[$key] = $item;
}

// 对键ပြောင်းပြန်နိုင်ရန်အတွက် sort
krsort($newArr);

print_r($newArr);
?>

ဤနည်းအားဖြင့်သော့ချက်အမည်များမိတ္တူပွားများကိုသင်ရှောင်ရှားနိုင်ရုံသာမက Krsort နှင့်လည်းကောင်း,


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

  • PHP Array ရှိအဓိကအကြောင်းရင်းများသည်ထူးခြားသည်, အစစ်အမှန် "အဓိကအမည်ပုံတူပွား" မရှိပါ။

  • Krsort သည်သော့ချက်အမည်များဖြင့် sort ကိုပြောင်းရန်နှင့်သော့ချက်အမည်များ၏ပြ problem နာကိုဖြေရှင်းရန်အသုံးပြုသည်။

  • သင်၏အချက်အလက်များတွင် "ထပ်ခါတလဲလဲသော့များ" ရှိပါကဒေတာဖွဲ့စည်းပုံနှင့် ပတ်သက်. ပြ a နာတစ်ခုဖြစ်ပြီး Array ဖွဲ့စည်းပုံကိုဒီဇိုင်းဆွဲသင့်သည်။

  • အချို့သောနယ်ပယ်တစ်ခုအနေဖြင့်နယ်ပယ်တစ်ခုစီအတွက် Sorting အတွက် aport ကဲ့သို့သောစိတ်ကြိုက်အမျိုးအစားများကိုအသုံးပြုသင့်သည်။

  • အကယ်. သင်ကသော့ချက်အမည်များဖြင့် sort လုပ်လိုပါကသော့ချက်အမည်များသည်ထူးခြားကြောင်းသေချာပါက၎င်းတို့သည်ထူးခြားသည်, ၎င်းတို့သည်ထူးခြားသည်, ထို့နောက် Krsort ကို သုံးပါ။

အကယ်. သင်သည် array key sorting ကိုစိတ်ဝင်စားပါက PHP စာရွက်စာတမ်းကိုအကြံပြုပါ။ Krsort - ပြောင်းပြန်နိုင်ရန်အတွက် key အားဖြင့်ခင်းကျင်းခြင်း