လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> ARSARC ကို KSORC နှင့်ပေါင်းစပ်အသုံးပြုသောအခါ Multi အခြေအနေအမျိုးမျိုးကိုအကောင်အထည်ဖော်ရန်တိကျသောနည်းလမ်းများကဘာတွေလဲ။

ARSARC ကို KSORC နှင့်ပေါင်းစပ်အသုံးပြုသောအခါ Multi အခြေအနေအမျိုးမျိုးကိုအကောင်အထည်ဖော်ရန်တိကျသောနည်းလမ်းများကဘာတွေလဲ။

gitbox 2025-08-12

PHP တွင် Array Sorting သည်ဒေတာပြုပြင်ခြင်းတွင်အထူးသဖြင့်ခြွင်းချက်မျိုးစုံအမျိုးမျိုးလိုအပ်သည့်ရှုထောင့်အမျိုးမျိုးနှင့်ရင်ဆိုင်နေရသည့်အခြေအနေများနှင့်ရင်ဆိုင်နေရသောအခါသင့်လျော်သော sorting function ကိုရွေးချယ်ရန်အထူးအရေးကြီးသည်။ Arsort () နှင့် Ksort () နှင့် Ksort () သည်ပေါင်းစပ်အသုံးပြုသောလုပ်ဆောင်ချက်နှစ်ခုဖြစ်သည်။ သူတို့ရဲ့ပေါင်းစပ်မှတဆင့် array များ၏တန်ဖိုးများနှင့်သော့များကိုစနစ်တကျစီမံနိုင်သည်။ ဤဆောင်းပါးသည်ဤလုပ်ဆောင်ချက်နှစ်ခုကိုပေါင်းစပ်ထားသောနှစ်မျိုးအမျိုးအနိမ့်ပိုင်းခွဲခြားရန်ပေါင်းစပ်ထားပုံကိုအသေးစိတ်ရှင်းပြပါလိမ့်မည်။

1 ။ arsort နှင့် ksort ၏အခြေခံလုပ်ဆောင်ချက်များ

  • Arsort () : ခင်းကျင်းရန်အမိန့်ကိုအစဉ်အဆက်ကိုစီပါ, သော့ချက်အမည်များကိုသိမ်းထားပါ။

  • Ksort () : "key" မှအစဉ်အလာကိုအစဉ်အလာဖြင့်အစဉ်အဆက်ထည့်ပါ။

ဤလုပ်ဆောင်ချက်နှစ်ခုသည်အခြေခံအားဖြင့် "တန်ဖိုးများ" နှင့် "သော့များ" ကိုအသီးသီးခွဲခြားထားသော်လည်းအချို့သောအခြေအနေများတွင်၎င်းတို့ကိုပိုမိုပြောင်းလွယ်ပြင်လွယ် Multi-Rice Sorting Logic အောင်မြင်ရန်အတူတကွအသုံးပြုနိုင်သည်။

2 ။ Multi-Conditions Sorting လိုအပ်ချက်များဥပမာ

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

 <span><span><span class="hljs-variable">$users</span></span><span> = [
    </span><span><span class="hljs-string">'user3'</span></span><span> =&gt; [</span><span><span class="hljs-string">'score'</span></span><span> =&gt; </span><span><span class="hljs-number">85</span></span><span>, </span><span><span class="hljs-string">'time'</span></span><span> =&gt; </span><span><span class="hljs-number">120</span></span><span>],
    </span><span><span class="hljs-string">'user1'</span></span><span> =&gt; [</span><span><span class="hljs-string">'score'</span></span><span> =&gt; </span><span><span class="hljs-number">92</span></span><span>, </span><span><span class="hljs-string">'time'</span></span><span> =&gt; </span><span><span class="hljs-number">110</span></span><span>],
    </span><span><span class="hljs-string">'user2'</span></span><span> =&gt; [</span><span><span class="hljs-string">'score'</span></span><span> =&gt; </span><span><span class="hljs-number">85</span></span><span>, </span><span><span class="hljs-string">'time'</span></span><span> =&gt; </span><span><span class="hljs-number">100</span></span><span>],
    </span><span><span class="hljs-string">'user4'</span></span><span> =&gt; [</span><span><span class="hljs-string">'score'</span></span><span> =&gt; </span><span><span class="hljs-number">92</span></span><span>, </span><span><span class="hljs-string">'time'</span></span><span> =&gt; </span><span><span class="hljs-number">130</span></span><span>],
];
</span></span>

လက်ရှိလိုအပ်ချက်များမှာ -

  1. ရမှတ် (ရမှတ်) အားဖြင့်ပထမ ဦး ဆုံး sort;

  2. ရမှတ်များသည်အတူတူပင်ဖြစ်ပါက၎င်းတို့ကိုအပြီးသတ်အချိန် (အချိန်) ကိုအစဉ်အလာဖြင့်ခွဲထားပါ။

  3. ရမှတ်နှင့်အချိန်သည်အတူတူပင်ဖြစ်ပါက၎င်းကိုအသုံးပြုသူအမည် (key name) မှအစဉ်အလာတွင်ထည့်ပါ။

အကောင်အထည်ဖော်မှုနည်းလမ်း

အဆင့် 1: sorting ယုတ္တိဗေဒကိုစိတ်ကြိုက်ပြုလုပ်ပါ

ရှုပ်ထွေးသော 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>] &lt; </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>] &gt; </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>

အဆင့် 2 - သော့ချက်အမည်များကိုတူညီသောအမျိုးအစားခွဲခြားပါ

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> =&gt; </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> &amp;</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> =&gt; </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>

ယခုအချိန်တွင် ဒေါ်လာနောက်ဆုံးအနေ ဖြင့်ရမှတ်များအနေဖြင့်ရမှတ်များ,

4 ။ ရိုးရှင်းသောဗားရှင်းအကောင်အထည်ဖော်မှု (နှစ်ရှုထောင် sort + key name)

အမှန်တကယ်စီမံကိန်းများအနေဖြင့်သင်သည်ဒေတာများကိုလည်းစုစည်းနိုင်ပြီးအလေးများကိုမိတ်ဆက်ပေးခြင်းနှင့် array_multisort () နှင့်ပေါင်းစပ်။ လည်ပတ်နိုင်ပါသည်, သို့သော်ဤနည်းလမ်းသည်အလွန်ဖော်ရွေခြင်းမဟုတ်ပါ။ ARSARS နှင့် KSARS ကို ပေါင်းစပ်ခြင်းအားဖြင့်သင်သည်အပေါင်းအသင်းခင်းကျင်းမှု၏ပြီးပြည့်စုံသောဖွဲ့စည်းပုံနှင့်အဓိကအမည်များကိုထိန်းသိမ်းနိုင်သည်။

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

Arsort () နှင့် KSARC () သည် Multies အခြေအနေအမျိုးမျိုးကိုတိုက်ရိုက်မထောက်ပံ့နိုင်သော်လည်း SQL ရှိ Col1 desc asc မှ Col1 des2 ASC တို့မှအရလုပ်ဆောင်ခြင်း နှင့်တူသောသက်ရောက်မှုများပြုလုပ်နိုင်သည် ဤအမျိုးအစားခွဲခြားသည့်နည်းစနစ်များကိုကျွမ်းကျင်စေခြင်းသည်ရှုပ်ထွေးသောခင်းကျင်းရေးအချက်အလက်များကိုကိုင်တွယ်သောအခါ developer များပိုမိုအဆင်ပြေစေရန်ကူညီလိမ့်မည်။