PHP တွင် strnatcmp function သည်သဘာဝအမိန့် (သဘာဝအသင်း) နှင့်နှိုင်းယှဉ်ခြင်းအတွက်ကိရိယာတစ်ခုဖြစ်သည်။ ၎င်းသည် strcmp ကဲ့သို့သောပုံမှန် string နှင့်နှိုင်းယှဉ်ခြင်းလုပ်ဆောင်ချက်များနှင့်ကွဲပြားခြားနားသည် ။ developer များအနေဖြင့်ဤလုပ်ဆောင်မှုအလုပ်မှအဘယ်အပြုသဘောနှင့်အနှုတ်လက်ခဏာတန်ဖိုးများကိုမည်သို့ကိုင်တွယ်ရမည်ကိုနားလည်ရန်အလွန်အရေးကြီးသည်။
strnatcmp function ၏ရှေ့ပြေးပုံစံသည်အောက်ပါအတိုင်းဖြစ်သည် -
<span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-title function_ invoke__">strnatcmp</span></span><span> ( </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$str1</span></span><span> , </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$str2</span></span><span> )
</span></span>
ဒီ function က string parameters တွေကို ဒေါ်လာ str1 နဲ့ $ str2 ကို ယူပြီးကြိုးနှစ်ချောင်းရဲ့သဘာဝအမိန့်နှိုင်းယှဉ်မှုကိုကိုယ်စားပြုတဲ့ကိန်းတန်ဖိုးကိုပြန်ပို့လိုက်တယ်။
အကယ်. ဒေါ်လာ str1 သည် ဒေါ်လာ str2 ထက်နည်းလျှင်အပျက်သဘောဆောင်သောတန်ဖိုးကိုပြန်လည်ရရှိခဲ့သည်။
အကယ်. ဒေါ်လာ str1 သည် ဒေါ်လာ str2 နှင့်ညီသည်ဆိုပါက 0 ကိုပြန်လာပါ။
အကယ်. $ str1 သည် ဒေါ်လာ str2 ထက်ကြီးပါကအပြုသဘောဆောင်သောတန်ဖိုးကိုပြန်ပို့သည်။
အနှုတ်တန်ဖိုးလွှာကိုပြန်သွားပါ
StrnatcMP သည် အနုတ်တန်ဖိုးတစ်ခုပြန်ရောက်လာသောအခါပထမ string 1 သည် ဒုတိယ string 2 သည် ဒုတိယ string2 မတိုင်မီအဆင့်သတ်မှတ်ထားသည်။ ဥပမာအားဖြင့်:
<span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">strnatcmp</span></span><span>(</span><span><span class="hljs-string">"apple10"</span></span><span>, </span><span><span class="hljs-string">"apple2"</span></span><span>); </span><span><span class="hljs-comment">// output ကိုအနုတ်တန်ဖိုး</span></span><span>
</span></span>
ဤဥပမာတွင် "Apple10" ကို "Apple2" မတိုင်မီသဘာဝကျကျခွဲခြားထားလိမ့်မည်။
0 ပြန်လာ 0:
အကယ်. ကြိုးနှစ်ချောင်းသည်သဘာဝတူတွင်အတူတူပင်ဖြစ်ပါက strnatcmp သည် 0 ပြန်လာလိမ့်မည်။ ဥပမာ -
<span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">strnatcmp</span></span><span>(</span><span><span class="hljs-string">"apple2"</span></span><span>, </span><span><span class="hljs-string">"apple2"</span></span><span>); </span><span><span class="hljs-comment">// ထုတ်လုပ်ခြင်း0</span></span><span>
</span></span>
ဒီမှာ strings နှစ်ခုအတူတူပင်ဖြစ်ကြသည်, ဒါကြောင့်ပြန်လာ 0 ပြန်လာ။
အပြုသဘောတန်ဖိုးကိုပြန်ပို့သည်:
strnatcmp သည် အပြုသဘောဆောင်သောတန်ဖိုးကိုပြန်လည်ရောက်ရှိသောအခါ၎င်းသည်ပထမ string 1 သည် ဒုတိယ string $ str2 ကို သဘာဝကျပြီးအဆင့်သတ်မှတ်ချက်ဖြစ်သည်။ ဥပမာအားဖြင့်:
<span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">strnatcmp</span></span><span>(</span><span><span class="hljs-string">"apple20"</span></span><span>, </span><span><span class="hljs-string">"apple2"</span></span><span>); </span><span><span class="hljs-comment">// ထုတ်လုပ်ခြင်း正值</span></span><span>
</span></span>
ဤဥပမာတွင် "Apple20" သည် "Apple2" အပြီးအပြီးအဆင့်သတ်မှတ်ချက်ဖြစ်ပြီးနံပါတ် 20 သည်နံပါတ် 2 ထက်သာလွန်သောကြောင့်ဖြစ်သည်။
ရိုးရှင်းသောနှိုင်းယှဉ်ချက် -
အကယ်. သင်သည်ကြိုးနှစ်ချောင်းသည်မည်သည့်နေရာတွင်ရှိသည်ကိုသင်ဆုံးဖြတ်လိုလျှင်, ပြန်လာတန်ဖိုးကိုတိုက်ရိုက်အသုံးပြုနိုင်သည်။ ဥပမာအားဖြင့်:
<span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strnatcmp</span></span><span>(</span><span><span class="hljs-variable">$str1</span></span><span>, </span><span><span class="hljs-variable">$str2</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span> < </span><span><span class="hljs-number">0</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$str1</span></span></span><span> အတွက်အဆင့် </span><span><span class="hljs-subst">$str2</span></span><span> ရေှ့";
} </span><span><span class="hljs-keyword">elseif</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span> > </span><span><span class="hljs-number">0</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$str1</span></span></span><span> အတွက်အဆင့် </span><span><span class="hljs-subst">$str2</span></span><span> နေှာင်းစွာ";
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$str1</span></span></span><span> နှင့် </span><span><span class="hljs-subst">$str2</span></span><span> အတူတူဖြစ်သော";
}
</span></span>
ဤနည်းလမ်းသည်လုပ်ဆောင်မှုနည်းလမ်းသည်မျိုးကွဲအမျိုးအစားများသို့မဟုတ်နှိုင်းယှဉ်ရန်အတွက်သင့်လျော်သည်။
sorting အတွက်အသုံးပြုမှု:
strnatcmp ကို အထူးသဖြင့်နံပါတ်များပါ 0 င်သောကြိုးများနှင့်ဆက်ဆံရာတွင်ကိုင်တွယ်သည့်အတိုင်း arrays of arrays ၏သဘာဝ sorting အတွက်အသုံးပြုသည်။ Arrays ကိုသဘာဝအစဉ်အခုန်ခွဲထားလိုပါက strnatcmp နှင့် တွဲဖက်. USort function ကိုသုံးနိုင်သည်။
<span><span><span class="hljs-variable">$array</span></span><span> = [</span><span><span class="hljs-string">"apple10"</span></span><span>, </span><span><span class="hljs-string">"apple2"</span></span><span>, </span><span><span class="hljs-string">"apple20"</span></span><span>, </span><span><span class="hljs-string">"apple1"</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>, </span><span><span class="hljs-string">'strnatcmp'</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>
ဒါက output ကိုဖြစ်လိမ့်မယ်:
<span><span>Array
(
[</span><span><span class="hljs-meta">0</span></span><span>] => apple1
[</span><span><span class="hljs-meta">1</span></span><span>] => apple2
[</span><span><span class="hljs-meta">2</span></span><span>] => apple10
[</span><span><span class="hljs-meta">3</span></span><span>] => apple20
)
</span></span>
ရှုပ်ထွေးသောအခြေအနေများကိုကိုင်တွယ်ခြင်း -
တခါတရံတွင်ကျွန်ုပ်တို့သည်ရှုပ်ထွေးသောကြိုးများ, ဗားရှင်းနံပါတ်များစသည်တို့ပါ 0 င်သောကြိုးများနှင့်နှိုင်းယှဉ်ရန်လိုအပ်သည် ။
<span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strnatcmp</span></span><span>(</span><span><span class="hljs-string">"version 10.1"</span></span><span>, </span><span><span class="hljs-string">"version 9.9"</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span> > </span><span><span class="hljs-number">0</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"version 10.1 နိှုင်းယှသ် version 9.9 အသစ်လုပ်"</span></span><span>;
}
</span></span>
output သည် - ဗားရှင်း 10.9 ထက် version 9.9 ထက်မွမ်းမံသည် ။
Strnatcmp သည်အလွန်အသုံးဝင်သော PHP function ကိုသဘာဝ sorting စည်းမျဉ်းစည်းကမ်းများဖြင့်နှိုင်းယှဉ်သည်။ ပြန်လည်ထူထောင်ရေးတန်ဖိုးများနှင့်အပျက်သဘောဆောင်သောအဓိပ္ပာယ်ကိုနားလည်ခြင်းနှင့်၎င်းတို့ကိုကိုင်တွယ်နိုင်ခြင်းကိုမှန်ကန်စွာကိုင်တွယ်နိုင်ခြင်းသည် developer များနှင့်နှိုင်းယှဉ်လျှင်ပိုမိုထိရောက်စွာလုပ်ဆောင်ခြင်းကိုပြုလုပ်ရန်ကူညီနိုင်သည်။