PHP တွင် apport () function ကို arrays sorting ကိုစိတ်ကြိုက်ပြုပြင်ရန်အသုံးပြုသည်။ ၎င်းသည်အလွန်အစွမ်းထက်သည်။ အသုံးပြုသူသတ်မှတ်ထားသောနှိုင်းယှဉ်မှုလုပ်ဆောင်ချက်များအပေါ် အခြေခံ. Array element များကို sort နိုင်သည်။ သို့သော်အမှန်တကယ်အမှန်တကယ်အသုံးပြုမှုတွင်ကျွန်ုပ်တို့သည်နှိုင်းယှဉ်လုပ်ဆောင်မှုများနှင့်နှိုင်းယှဉ်လျှင်မမှန်ကန်သောပြန်လာသည့်တန်ဖိုးများနှင့်ဆက်စပ်သောအချို့သော sorting အမှားများကိုကြုံတွေ့ရနိုင်သည်။ ဤဆောင်းပါးသည်များသောအားဖြင့်သာမန်အမှားများကိုခွဲခြမ်းစိတ်ဖြာပါလိမ့်မည်။
Usort () function ၏အဓိကလုပ်ဆောင်ချက်သည်အသုံးပြုသူသတ်မှတ်ထားသောနှိုင်းယှဉ်မှု function ဖြစ်သည်။ ဤနှိုင်းယှဉ်ခြင်း function သည် array တွင် element နှစ်ခုကိုကိုယ်စားပြုသော parameters နှစ်ခုကိုကိုယ်စားပြုသည်။ နှိုင်းယှဉ်ခြင်း function သည်ဤဒြပ်စင်နှစ်ခု၏အမိန့်ကိုကိုယ်စားပြုသည့်ကိန်းဂဏန်းကိုပြန်ပို့သင့်သည်။
Return Value သည် 0 ထက်နည်းသည်။ ဆိုလိုသည်မှာပထမ element သည်ဒုတိယဒြပ်စင်ရှေ့တွင်ရှိသင့်သည်။
Return Value သည် 0 နှင့်ညီသည်။ ဆိုလိုသည်မှာဒြပ်စင်နှစ်ခုသည်တန်းတူဖြစ်ပြီး၎င်းတို့၏ဆွေမျိုးအမိန့်သည်မပြောင်းလဲသေးပါ။
0 င်ထက်ကြီးမြတ်သောတန်ဖိုးကို 0 င်သည်။
အကယ်. သင်၏နှိုင်းယှဉ်ခြင်း function သည်ဤစည်းမျဉ်းကိုမလိုက်နာပါက Usort () သည် အမှားအယွင်းရှိလိမ့်မည်။ ဘုံအမှားတစ်ခုမှာနှိုင်းယှဉ်ခြင်း function ၏ပြန်လာတန်ဖိုးသည်မမှန်ကန်ပါသို့မဟုတ်ပြန်လာတန်ဖိုးအကွာအဝေးလိုအပ်ချက်နှင့်မကိုက်ညီပါ။
<span><span><span class="hljs-variable">$array</span></span><span> = [</span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">usort</span></span><span>(</span><span><span class="hljs-variable">$array</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-variable">$b</span></span><span>) </span><span><span class="hljs-keyword">return</span></span><span> -</span><span><span class="hljs-number">1</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-variable">$b</span></span><span>) </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-number">1</span></span><span>;
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-string">'equal'</span></span><span>; </span><span><span class="hljs-comment">// မမှန်ကန်သောပြန်လာတန်ဖိုး</span></span><span>
});
</span></span>
အပေါ်ကဥပမာမှာ 'တန်းတူညီမျှ' ဆိုတာ string တစ်ခုဖြစ်ပြီး usort () ကိန်းဂဏန်းတစ်ခုပြန်ပို့ဖို့မျှော်လင့်ထားတယ်။ ၎င်းသည် sorting အပြုအမူကိုမျှော်လင့်ချက်များနှင့်မကိုက်ညီစေရန်ဖြစ်ပေါ်စေသည်။
နှိုင်းယှဉ်ခြင်း function ကိုအမြဲတမ်းကိန်းတန်ဖိုးများကိုအမြဲတမ်းပြန်ပို့ကြောင်းသေချာပါစေ။ ဤသို့ပြုလုပ်ရန်မှန်ကန်သောနည်းလမ်းမှာ -1 , 0 သို့မဟုတ် 1 ကို ပြန်သွားရန်ဖြစ်သည်။
<span><span><span class="hljs-variable">$array</span></span><span> = [</span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">usort</span></span><span>(</span><span><span class="hljs-variable">$array</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-variable">$b</span></span><span>) </span><span><span class="hljs-keyword">return</span></span><span> -</span><span><span class="hljs-number">1</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-variable">$b</span></span><span>) </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-number">1</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">// မှန်ကန်သောပြန်လာတန်ဖိုးကို</span></span><span>
});
</span></span>
airort () function () function ကိုအမျိုးအစားအမျိုးမျိုး၏ array element တွေအတွက်သင့်လျော်သည်။ ဥပမာအားဖြင့်, ကိန်းဂဏန်းများနှင့်ကြိုးများတပ်ဆင်ခြင်းသည်မမှန်ကန်သည့်အမိန့်ကိုဖြစ်စေနိုင်သည်။
<span><span><span class="hljs-variable">$array</span></span><span> = [</span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-string">'1'</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">usort</span></span><span>(</span><span><span class="hljs-variable">$array</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">return</span></span><span> </span><span><span class="hljs-variable">$a</span></span><span> - </span><span><span class="hljs-variable">$b</span></span><span>;
});
</span></span>
Usort () သည် strings element အမျိုးအစားကိုပြောင်းလဲရန်ကြိုးစားလိမ့်မည်,
နှိုင်းယှဉ်မှုလုပ်ဆောင်ချက်များတွင် array element အမျိုးအစားသည်နှိုင်းယှဉ်ခြင်းယုတ္တိဗေဒ၏ရှေ့နောက်ညီညွတ်မှုကိုသေချာစေရန်အတိအလင်းပြောင်းလဲသည်။
<span><span><span class="hljs-variable">$array</span></span><span> = [</span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-string">'1'</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">usort</span></span><span>(</span><span><span class="hljs-variable">$array</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">return</span></span><span> (</span><span><span class="hljs-keyword">int</span></span><span>)</span><span><span class="hljs-variable">$a</span></span><span> - (</span><span><span class="hljs-keyword">int</span></span><span>)</span><span><span class="hljs-variable">$b</span></span><span>; </span><span><span class="hljs-comment">// integer မှသွန်း</span></span><span>
});
</span></span>
Multidimensional Arrays ကို sort လုပ်ရန် usort () ကို အသုံးပြုသောအခါ, Array Elements ၏အသိုက်ဖွဲ့စည်းပုံကိုမှန်ကန်စွာဆက်လက်လုပ်ဆောင်ရန်ပျက်ကွက်ကြောင်းပြ the နာကိုသင်ကြုံတွေ့ရနိုင်သည်။ အထူးသဖြင့်သင်ကလေး၏ဒြပ်စင်တစ်ခုစီကိုစီရန်လိုအပ်သည့်အခါနှိုင်းယှဉ်ခြင်း function ကိုနှိုင်းယှဉ်ခြင်း function ကိုမှန်ကန်စွာမသုံးပါက Sorting သည်မအောင်မြင်ပါ။
<span><span><span class="hljs-variable">$array</span></span><span> = [
[</span><span><span class="hljs-string">'id'</span></span><span> => </span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Tom'</span></span><span>],
[</span><span><span class="hljs-string">'id'</span></span><span> => </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Jerry'</span></span><span>],
[</span><span><span class="hljs-string">'id'</span></span><span> => </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Alice'</span></span><span>]
];
</span><span><span class="hljs-title function_ invoke__">usort</span></span><span>(</span><span><span class="hljs-variable">$array</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">return</span></span><span> </span><span><span class="hljs-variable">$a</span></span><span>[</span><span><span class="hljs-string">'id'</span></span><span>] - </span><span><span class="hljs-variable">$b</span></span><span>[</span><span><span class="hljs-string">'id'</span></span><span>];
});
</span></span>
ဤဥပမာတွင်ကုဒ်သည်ကောင်းမွန်သည်။ သို့သော် array အပြောင်းအလဲများဖွဲ့စည်းပုံသည် 'ID' ခလုတ်ကဲ့သို့သို့မဟုတ်၎င်း၏တန်ဖိုးသည်အချည်းနှီးဖြစ်စေသည်။
နှိုင်းယှဉ်ခြင်း function သည်ဖြစ်နိုင်ချေရှိသောအခြေအနေအားလုံးကိုကိုင်တွယ်ဖြေရှင်းနိုင်ရန်သို့မဟုတ်အမှားများကိုကာကွယ်ရန်ပုံမှန်တန်ဖိုးများပေးခြင်းဖြင့်စစ်ဆေးခြင်းအားဖြင့်ဖြစ်နိုင်ချေရှိသောအခြေအနေများအားလုံးကိုကိုင်တွယ်ရန်သေချာစေပါ။
<span><span><span class="hljs-variable">$array</span></span><span> = [
[</span><span><span class="hljs-string">'id'</span></span><span> => </span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Tom'</span></span><span>],
[</span><span><span class="hljs-string">'id'</span></span><span> => </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Jerry'</span></span><span>],
[</span><span><span class="hljs-string">'id'</span></span><span> => </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Alice'</span></span><span>]
];
</span><span><span class="hljs-title function_ invoke__">usort</span></span><span>(</span><span><span class="hljs-variable">$array</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">return</span></span><span> (</span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$a</span></span><span>[</span><span><span class="hljs-string">'id'</span></span><span>]) ? </span><span><span class="hljs-variable">$a</span></span><span>[</span><span><span class="hljs-string">'id'</span></span><span>] : </span><span><span class="hljs-number">0</span></span><span>) - (</span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$b</span></span><span>[</span><span><span class="hljs-string">'id'</span></span><span>]) ? </span><span><span class="hljs-variable">$b</span></span><span>[</span><span><span class="hljs-string">'id'</span></span><span>] : </span><span><span class="hljs-number">0</span></span><span>);
});
</span></span>
apport () abort () သည်ခင်းကျင်းသည့်အခါ array သည် reindexed ဖြစ်သည်။ ဆိုလိုသည်မှာမူရင်းခင်းကျင်းညွှန်းကိန်းကိုဖယ်ရှားပစ်လိမ့်မည်။ အကယ်. သင်သည်မူလခင်းကျင်းခြင်း၏သော့များကိုသိမ်းဆည်းရန်လိုအပ်ပါက USort () သည် သင့်အတွက်မသင့်တော်ပါ။
<span><span><span class="hljs-variable">$array</span></span><span> = [</span><span><span class="hljs-number">3</span></span><span> => </span><span><span class="hljs-string">'apple'</span></span><span>, </span><span><span class="hljs-number">1</span></span><span> => </span><span><span class="hljs-string">'banana'</span></span><span>, </span><span><span class="hljs-number">2</span></span><span> => </span><span><span class="hljs-string">'cherry'</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">usort</span></span><span>(</span><span><span class="hljs-variable">$array</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">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">strcmp</span></span><span>(</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-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>);
</span></span>
အထက်ပါကုဒ်သည်မူလအညွှန်းကိန်းမပါဘဲ array ကို output လုပ်လိမ့်မည်။
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[</span><span><span class="hljs-number">0</span></span><span>] => apple
[</span><span><span class="hljs-number">1</span></span><span>] => banana
[</span><span><span class="hljs-number">2</span></span><span>] => cherry
)
</span></span>
မူရင်းခင်းကျင်းမှု၏သော့များကိုသိမ်းဆည်းရန်လိုအပ်ပါကမူရင်းခင်းကျင်းမှု၏သော့များကိုသိမ်းဆည်းထားသည့် Usort () နှင့်ကွဲပြားသော UASort () ကိုသုံးနိုင်သည်။
<span><span><span class="hljs-variable">$array</span></span><span> = [</span><span><span class="hljs-number">3</span></span><span> => </span><span><span class="hljs-string">'apple'</span></span><span>, </span><span><span class="hljs-number">1</span></span><span> => </span><span><span class="hljs-string">'banana'</span></span><span>, </span><span><span class="hljs-number">2</span></span><span> => </span><span><span class="hljs-string">'cherry'</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">uasort</span></span><span>(</span><span><span class="hljs-variable">$array</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">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">strcmp</span></span><span>(</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-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>);
</span></span>
၎င်းသည်မူရင်းသော့ချက်ကိုထိန်းသိမ်းထားလိမ့်မည်။
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[</span><span><span class="hljs-number">3</span></span><span>] => apple
[</span><span><span class="hljs-number">1</span></span><span>] => banana
[</span><span><span class="hljs-number">2</span></span><span>] => cherry
)
</span></span>
floating dec မကိန်းများပါ 0 င်သောခင်းကျင်းမှုတစ်ခုစီကိုစီရန် sorting အမှားများသည် floating points ၏တိကျမှုန့်ကန့်သတ်ချက်များကြောင့်ဖြစ်နိုင်သည်။ အထူးသဖြင့်ကိန်းဂဏန်းများ၏တိကျမှန်ကန်မှုသည်အလွန်မြင့်မားသောကြောင့်နှိုင်းယှဉ်မှုသည်မျှော်လင့်ထားသည့်အတိုင်းမဖြစ်နိုင်ပါ။
<span><span><span class="hljs-variable">$array</span></span><span> = [</span><span><span class="hljs-number">1.0000001</span></span><span>, </span><span><span class="hljs-number">1.0000002</span></span><span>, </span><span><span class="hljs-number">1.0000003</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">usort</span></span><span>(</span><span><span class="hljs-variable">$array</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">return</span></span><span> </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-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>);
</span></span>
ရေပေါ်နံပါတ်များကိုနှိုင်းယှဉ်ခြင်းအားဖြင့်တိကျမှန်ကန်မှုဖြင့်ထိခိုက်နိုင်သည်။
floating decimalle ၏ဂဏန်းအရေအတွက်ကိုကန့်သတ်ရန် () function ကိုသုံးပါ။
<span><span><span class="hljs-variable">$array</span></span><span> = [</span><span><span class="hljs-number">1.0000001</span></span><span>, </span><span><span class="hljs-number">1.0000002</span></span><span>, </span><span><span class="hljs-number">1.0000003</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">usort</span></span><span>(</span><span><span class="hljs-variable">$array</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">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">round</span></span><span>(</span><span><span class="hljs-variable">$a</span></span><span>, </span><span><span class="hljs-number">7</span></span><span>) - </span><span><span class="hljs-title function_ invoke__">round</span></span><span>(</span><span><span class="hljs-variable">$b</span></span><span>, </span><span><span class="hljs-number">7</span></span><span>); </span><span><span class="hljs-comment">// တိကျမှန်ကန်မှုကိုကန့်သတ်</span></span><span>
});
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>);
</span></span>