PHP တွင် arrays များ, အထူးသဖြင့်ဆန်းစစ်ခြင်းကို sorting arrays (key-value pair perf arrays) များ (Key-value pair တစုံစာရင်း) ကိုမကြာခဏကြုံတွေ့ရလေ့ရှိသည်။ သို့မဟုတ် sorting သည်မျှော်လင့်ချက်များနှင့်မကိုက်ညီပါ။ Krsort သည် PHP တွင် function ကိုသော့ချက်အမည်များဖြင့်ခွဲထုတ်ရန်ဖြစ်သည်။ ၎င်းသည် "သော့မိတ္တူပွားခြင်း" ၏ပြ problem နာကိုဖြေရှင်းနိုင်ပါသလား။ ဤဆောင်းပါးသည်အသေးစိတ်လေ့လာပြီးတိကျသောစစ်ဆင်ရေးဥပမာများကိုပေးလိမ့်မည်။
ပထမ ဦး စွာ 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 နာများရှိသည်ဟုသင်ခံစားရပါက,
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 သည် သော့များ၏ထူးခြားမှုကိုမထိခိုက်စေကြောင်း သတိပြုပါ။
PHP Array ၏ထူးခြားသောလက္ခဏာများကြောင့် "သော့မိတ္တူပွားခြင်းကြောင့်ဖြစ်ပေါ်လာသောပြ problems နာများ" ဟုခေါ်သည့် PHP array ၏ထူးခြားသောလက္ခဏာများကြောင့်ဖြစ်သည်။
Multidimensional Array အတွက်ကွဲပြားခြားနားသောအဆင့်ဆင့်မှာအဓိကအကြောင်းရင်းများထပ်ခါတလဲလဲပေမယ့်တူညီတဲ့အဆင့်တွင်ထူးခြားသည်။
သင်နယ်ပယ်တစ်ခုအနေဖြင့်ခွဲချင်သော်လည်းသော့ချက်အမည်သည်ထူးခြားသည်မဟုတ်, အချက်အလက်ဖွဲ့စည်းပုံသည်မဆင်ခြင်နိုင်ပါ။
သင့်တွင် 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 ကို အဓိကနာမည်တွေအတွက်သာခွဲထားတယ်။
အကယ်. သင်အမှန်တကယ်အမည်များကိုမိတ္တူပွားခြင်းကိုရှောင်ရှားရန်သော့ချက်တစ်ခုအနေဖြင့်လယ်ကွင်းတစ်ခုအဖြစ်အသုံးပြုရန်လိုအပ်ပါကသော့ချက်အမည်များကိုပထမဆုံးစစ်ထုတ်နိုင်သည်သို့မဟုတ် 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 နှင့်လည်းကောင်း,
PHP Array ရှိအဓိကအကြောင်းရင်းများသည်ထူးခြားသည်, အစစ်အမှန် "အဓိကအမည်ပုံတူပွား" မရှိပါ။
Krsort သည်သော့ချက်အမည်များဖြင့် sort ကိုပြောင်းရန်နှင့်သော့ချက်အမည်များ၏ပြ problem နာကိုဖြေရှင်းရန်အသုံးပြုသည်။
သင်၏အချက်အလက်များတွင် "ထပ်ခါတလဲလဲသော့များ" ရှိပါကဒေတာဖွဲ့စည်းပုံနှင့် ပတ်သက်. ပြ a နာတစ်ခုဖြစ်ပြီး Array ဖွဲ့စည်းပုံကိုဒီဇိုင်းဆွဲသင့်သည်။
အချို့သောနယ်ပယ်တစ်ခုအနေဖြင့်နယ်ပယ်တစ်ခုစီအတွက် Sorting အတွက် aport ကဲ့သို့သောစိတ်ကြိုက်အမျိုးအစားများကိုအသုံးပြုသင့်သည်။
အကယ်. သင်ကသော့ချက်အမည်များဖြင့် sort လုပ်လိုပါကသော့ချက်အမည်များသည်ထူးခြားကြောင်းသေချာပါက၎င်းတို့သည်ထူးခြားသည်, ၎င်းတို့သည်ထူးခြားသည်, ထို့နောက် Krsort ကို သုံးပါ။
အကယ်. သင်သည် array key sorting ကိုစိတ်ဝင်စားပါက PHP စာရွက်စာတမ်းကိုအကြံပြုပါ။ Krsort - ပြောင်းပြန်နိုင်ရန်အတွက် key အားဖြင့်ခင်းကျင်းခြင်း