PHP တွင် Array Sorting သည်ဒေတာပြုပြင်ခြင်းတွင်အထူးသဖြင့်ခြွင်းချက်မျိုးစုံအမျိုးမျိုးလိုအပ်သည့်ရှုထောင့်အမျိုးမျိုးနှင့်ရင်ဆိုင်နေရသည့်အခြေအနေများနှင့်ရင်ဆိုင်နေရသောအခါသင့်လျော်သော sorting function ကိုရွေးချယ်ရန်အထူးအရေးကြီးသည်။ Arsort () နှင့် Ksort () နှင့် Ksort () သည်ပေါင်းစပ်အသုံးပြုသောလုပ်ဆောင်ချက်နှစ်ခုဖြစ်သည်။ သူတို့ရဲ့ပေါင်းစပ်မှတဆင့် array များ၏တန်ဖိုးများနှင့်သော့များကိုစနစ်တကျစီမံနိုင်သည်။ ဤဆောင်းပါးသည်ဤလုပ်ဆောင်ချက်နှစ်ခုကိုပေါင်းစပ်ထားသောနှစ်မျိုးအမျိုးအနိမ့်ပိုင်းခွဲခြားရန်ပေါင်းစပ်ထားပုံကိုအသေးစိတ်ရှင်းပြပါလိမ့်မည်။
Arsort () : ခင်းကျင်းရန်အမိန့်ကိုအစဉ်အဆက်ကိုစီပါ, သော့ချက်အမည်များကိုသိမ်းထားပါ။
Ksort () : "key" မှအစဉ်အလာကိုအစဉ်အလာဖြင့်အစဉ်အဆက်ထည့်ပါ။
ဤလုပ်ဆောင်ချက်နှစ်ခုသည်အခြေခံအားဖြင့် "တန်ဖိုးများ" နှင့် "သော့များ" ကိုအသီးသီးခွဲခြားထားသော်လည်းအချို့သောအခြေအနေများတွင်၎င်းတို့ကိုပိုမိုပြောင်းလွယ်ပြင်လွယ် Multi-Rice Sorting Logic အောင်မြင်ရန်အတူတကွအသုံးပြုနိုင်သည်။
အသုံးပြုသူများ၏ရမှတ်မှတ်တမ်းများကိုကိုယ်စားပြုရန်အောက်ပါအတိုင်းခင်းကျင်းမှုတစ်ခုရှိသည်ဆိုပါစို့။
<span><span><span class="hljs-variable">$users</span></span><span> = [
</span><span><span class="hljs-string">'user3'</span></span><span> => [</span><span><span class="hljs-string">'score'</span></span><span> => </span><span><span class="hljs-number">85</span></span><span>, </span><span><span class="hljs-string">'time'</span></span><span> => </span><span><span class="hljs-number">120</span></span><span>],
</span><span><span class="hljs-string">'user1'</span></span><span> => [</span><span><span class="hljs-string">'score'</span></span><span> => </span><span><span class="hljs-number">92</span></span><span>, </span><span><span class="hljs-string">'time'</span></span><span> => </span><span><span class="hljs-number">110</span></span><span>],
</span><span><span class="hljs-string">'user2'</span></span><span> => [</span><span><span class="hljs-string">'score'</span></span><span> => </span><span><span class="hljs-number">85</span></span><span>, </span><span><span class="hljs-string">'time'</span></span><span> => </span><span><span class="hljs-number">100</span></span><span>],
</span><span><span class="hljs-string">'user4'</span></span><span> => [</span><span><span class="hljs-string">'score'</span></span><span> => </span><span><span class="hljs-number">92</span></span><span>, </span><span><span class="hljs-string">'time'</span></span><span> => </span><span><span class="hljs-number">130</span></span><span>],
];
</span></span>
လက်ရှိလိုအပ်ချက်များမှာ -
ရမှတ် (ရမှတ်) အားဖြင့်ပထမ ဦး ဆုံး sort;
ရမှတ်များသည်အတူတူပင်ဖြစ်ပါက၎င်းတို့ကိုအပြီးသတ်အချိန် (အချိန်) ကိုအစဉ်အလာဖြင့်ခွဲထားပါ။
ရမှတ်နှင့်အချိန်သည်အတူတူပင်ဖြစ်ပါက၎င်းကိုအသုံးပြုသူအမည် (key name) မှအစဉ်အလာတွင်ထည့်ပါ။
ရှုပ်ထွေးသော sorting အောင်မြင်ရန်သင် UASort () ကို ထုံးစံအတိုင်းလုပ်ဆောင်ချက်များဖြင့်အသုံးပြုနိုင်သည်။
<span><span><span class="hljs-title function_ invoke__">uasort</span></span><span>(</span><span><span class="hljs-variable">$users</span></span><span>, function(</span><span><span class="hljs-variable">$a</span></span><span>, </span><span><span class="hljs-variable">$b</span></span><span>) {
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$a</span></span><span>[</span><span><span class="hljs-string">'score'</span></span><span>] == </span><span><span class="hljs-variable">$b</span></span><span>[</span><span><span class="hljs-string">'score'</span></span><span>]) {
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$a</span></span><span>[</span><span><span class="hljs-string">'time'</span></span><span>] == </span><span><span class="hljs-variable">$b</span></span><span>[</span><span><span class="hljs-string">'time'</span></span><span>]) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-number">0</span></span><span>; </span><span><span class="hljs-comment">// နောက်ဆက်တွဲအသုံးပြုမှုအတွက်ချန်ထားပါksortProcess key name sorting</span></span><span>
}
</span><span><span class="hljs-keyword">return</span></span><span> (</span><span><span class="hljs-variable">$a</span></span><span>[</span><span><span class="hljs-string">'time'</span></span><span>] < </span><span><span class="hljs-variable">$b</span></span><span>[</span><span><span class="hljs-string">'time'</span></span><span>]) ? -</span><span><span class="hljs-number">1</span></span><span> : </span><span><span class="hljs-number">1</span></span><span>; </span><span><span class="hljs-comment">// အချိန်</span></span><span>
}
</span><span><span class="hljs-keyword">return</span></span><span> (</span><span><span class="hljs-variable">$a</span></span><span>[</span><span><span class="hljs-string">'score'</span></span><span>] > </span><span><span class="hljs-variable">$b</span></span><span>[</span><span><span class="hljs-string">'score'</span></span><span>]) ? -</span><span><span class="hljs-number">1</span></span><span> : </span><span><span class="hljs-number">1</span></span><span>; </span><span><span class="hljs-comment">// descending ရမှတ်</span></span><span>
});
</span></span>
UASARC () သည် အဓိကအကြောင်းရင်းများအနေဖြင့်အစဉ်အလာကိုမထိခိုက်သောကြောင့် KSORC () သည်သော့ချက်အမည်များကိုစီရန် ksort () ကို သုံးနိုင်သည်။ သို့သော်ဤအဆင့်သည်တန်ဖိုးများအတူတူပင်ဖြစ်သည့်အခါသာအဓိပ္ပာယ်ရှိသည်။ အလယ်အလတ်ပြောင်းလဲခြင်းဖွဲ့စည်းပုံများကိုအသုံးပြုနိုင်သည်။
<span><span><span class="hljs-comment">// sorted Array သော့ကိုပြန်လည်စုစည်းပါ</span></span><span>
</span><span><span class="hljs-variable">$temp</span></span><span> = [];
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$users</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$key</span></span><span> => </span><span><span class="hljs-variable">$value</span></span><span>) {
</span><span><span class="hljs-variable">$groupKey</span></span><span> = </span><span><span class="hljs-variable">$value</span></span><span>[</span><span><span class="hljs-string">'score'</span></span><span>] . </span><span><span class="hljs-string">'-'</span></span><span> . </span><span><span class="hljs-variable">$value</span></span><span>[</span><span><span class="hljs-string">'time'</span></span><span>];
</span><span><span class="hljs-variable">$temp</span></span><span>[</span><span><span class="hljs-variable">$groupKey</span></span><span>][</span><span><span class="hljs-variable">$key</span></span><span>] = </span><span><span class="hljs-variable">$value</span></span><span>;
}
</span><span><span class="hljs-comment">// သော့အမည်တစ်ခုစီကိုစီပါ</span></span><span>
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$temp</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> &</span><span><span class="hljs-variable">$group</span></span><span>) {
</span><span><span class="hljs-title function_ invoke__">ksort</span></span><span>(</span><span><span class="hljs-variable">$group</span></span><span>); </span><span><span class="hljs-comment">// key name ကိုတက်</span></span><span>
}
</span><span><span class="hljs-comment">// နောက်ဆုံးရလဒ်သို့ပေါင်းစည်း</span></span><span>
</span><span><span class="hljs-variable">$final</span></span><span> = [];
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$temp</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$group</span></span><span>) {
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$group</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$k</span></span><span> => </span><span><span class="hljs-variable">$v</span></span><span>) {
</span><span><span class="hljs-variable">$final</span></span><span>[</span><span><span class="hljs-variable">$k</span></span><span>] = </span><span><span class="hljs-variable">$v</span></span><span>;
}
}
</span></span>
ယခုအချိန်တွင် ဒေါ်လာနောက်ဆုံးအနေ ဖြင့်ရမှတ်များအနေဖြင့်ရမှတ်များ,
အမှန်တကယ်စီမံကိန်းများအနေဖြင့်သင်သည်ဒေတာများကိုလည်းစုစည်းနိုင်ပြီးအလေးများကိုမိတ်ဆက်ပေးခြင်းနှင့် array_multisort () နှင့်ပေါင်းစပ်။ လည်ပတ်နိုင်ပါသည်, သို့သော်ဤနည်းလမ်းသည်အလွန်ဖော်ရွေခြင်းမဟုတ်ပါ။ ARSARS နှင့် KSARS ကို ပေါင်းစပ်ခြင်းအားဖြင့်သင်သည်အပေါင်းအသင်းခင်းကျင်းမှု၏ပြီးပြည့်စုံသောဖွဲ့စည်းပုံနှင့်အဓိကအမည်များကိုထိန်းသိမ်းနိုင်သည်။
Arsort () နှင့် KSARC () သည် Multies အခြေအနေအမျိုးမျိုးကိုတိုက်ရိုက်မထောက်ပံ့နိုင်သော်လည်း SQL ရှိ Col1 desc asc မှ Col1 des2 ASC တို့မှအရလုပ်ဆောင်ခြင်း နှင့်တူသောသက်ရောက်မှုများပြုလုပ်နိုင်သည် ။ ဤအမျိုးအစားခွဲခြားသည့်နည်းစနစ်များကိုကျွမ်းကျင်စေခြင်းသည်ရှုပ်ထွေးသောခင်းကျင်းရေးအချက်အလက်များကိုကိုင်တွယ်သောအခါ developer များပိုမိုအဆင်ပြေစေရန်ကူညီလိမ့်မည်။