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

Natsort function ကိုအသုံးပြုပြီးတရုတ်စာလုံးများကိုခွဲခြားတဲ့အခါဘာတွေပြ problems နာတွေနဲ့ဖြေရှင်းနည်းတွေကိုအာရုံစိုက်သင့်သလဲ။

gitbox 2025-09-12

PHP တွင် Natsort () function ကိုသဘာဝအမိန့်တွင်ခင်းကျင်းရန်အသုံးပြုသည်။ ၎င်း၏အဓိကအင်္ဂါရပ်သည်ခဲ sorting ထက်လူတို့၏သိမြင်မှုအလေ့အထများအရကြိုးများကိုစီရန်ဖြစ်သည်။ Natsort () သည် များသောအားဖြင့်အင်္ဂလိပ်အက္ခရာများအတွက်အကောင်းဆုံးဖြစ်သည်။

ဤဆောင်းပါးသည် Natsort () ကို အသုံးပြု. တရုတ်စာလုံးများကို ခွဲ. ဖြေရှင်းရန်နှင့်ဖြေရှင်းနည်းများကိုခွဲခြားသောအခါသင်ကြုံတွေ့ရမည့်ပြ problems နာများကိုလေ့လာပါလိမ့်မည်။

1 ။ Natsort ရှိတရုတ်စာလုံးများကိုခွဲထုတ်သည့်အခါဘုံပြ problems နာများ

  1. တရုတ်ဇာတ်ကောင်အက္ခရာစဉ်

    Natsort () သည် အင်္ဂလိပ်စာများနှင့်ကွဲပြားခြားနားစွာ encodes encoded လုပ်ရန်ကြိုးစားသည် ထို့ကြောင့် "Zhang" နှင့် "Li" နှင့်ဆင်တူသောတရုတ်စာလုံးများကိုခွဲထုတ်သည့်အခါပေါ်လာလိမ့်မည်။

  2. တရုတ် pinyin အမိန့်ရှုပ်ထွေးဖြစ်ပါတယ်

    Natsort () သည် တရုတ် Pinyin အမိန့်သို့မဟုတ်အခြားဘာသာစကား sorting စည်းမျဉ်းများကိုအလိုအလျောက်မစဉ်းစားပါ။ ဆိုလိုသည်မှာတရုတ်စာလုံးနှစ်ဖက်သည်သိသာထင်ရှားသည့်အမိန့်တွင်ရှိနေသေးရင်တောင် Natsort () တွင်ကွဲပြားခြားနားစွာပြုမူနိုင်သည်။ ဥပမာအားဖြင့် "Zhao" နှင့် "ငွေ" ကိုရှေ့နှင့် "Zhao" တွင် "ငွေ" အဖြစ်သတ်မှတ်နိုင်သည်။

2 ။ sorting ပြ problem နာကိုဘယ်လိုဖြေရှင်းရမလဲ

တရုတ်စာလုံးများကိုမှန်ကန်စွာစီရန်, Natsort () သို့မဟုတ်အခြားရွေးချယ်စရာများကိုပိုမိုကောင်းမွန်စေရန်အောက်ပါနည်းလမ်းများကိုကျွန်ုပ်တို့အသုံးပြုနိုင်သည်။

1 ။ ကော်လာကို သုံးခြင်း (အကြံပြုသည်)

Collator သည် PHP မှပေးသော PHP မှပေးထားသောအတန်းတစ်ခုဖြစ်သည်။ ၎င်းသည်အထူးသနှင့်ဒေသများ (ဒေသများ) အရကြိုးများပြုလုပ်နိုင်သည်။ တရုတ်ဝန်းကျင်တွင်သင့်လျော်သောဒေသများအားသတ်မှတ်ခြင်းဖြင့် Pinyin မှခွဲထုတ်ခြင်း၏အကျိုးသက်ရောက်မှုကိုသင်ရရှိနိုင်သည်။ ဤတွင်တရုတ်အမျိုးအစားများအတွက် collator class ကိုအသုံးပြုခြင်း၏ဥပမာတစ်ခုဖြစ်သည်။

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$locale</span></span><span> = </span><span><span class="hljs-string">'zh_CN'</span></span><span>;  </span><span><span class="hljs-comment">// တရုတ်ပတ်ဝန်းကျင်ကိုသတ်မှတ်ပါ</span></span><span>
</span><span><span class="hljs-variable">$collator</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">Collator</span></span><span>(</span><span><span class="hljs-variable">$locale</span></span><span>);

</span><span><span class="hljs-comment">// တရုတ်ခင်းကျင်းမှုရှိတယ်ဆိုပါစို့</span></span><span>
</span><span><span class="hljs-variable">$names</span></span><span> = [</span><span><span class="hljs-string">"Zhang San"</span></span><span>, </span><span><span class="hljs-string">"li si"</span></span><span>, </span><span><span class="hljs-string">"ဝမ်ဝူ"</span></span><span>, </span><span><span class="hljs-string">"Zhao Liu"</span></span><span>, </span><span><span class="hljs-string">"Qian qi"</span></span><span>];

</span><span><span class="hljs-comment">// အသုံးပြု Collator ရေှးချယ်</span></span><span>
</span><span><span class="hljs-variable">$collator</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">asort</span></span><span>(</span><span><span class="hljs-variable">$names</span></span><span>);

</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$names</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

Collator သည် Unicode တန်ဖိုးများမျှသာမဟုတ်ဘဲ Pinyin Order အရခွဲခြားနိုင်သည်။

2 ။ sorting စည်းမျဉ်းစည်းကမ်းတွေကိုစိတ်တိုင်းကျ

အကယ်. collator သည် တိကျတဲ့လိုအပ်ချက်တစ်ခုနှင့်မကိုက်ညီပါကသို့မဟုတ် sorting စည်းမျဉ်းစည်းကမ်းများကိုစိတ်ကြိုက်ပြုလုပ်ရန်လိုအပ်ပါက (သတ်သတ်မှတ်မှတ် pinyin သို့မဟုတ်အခြားအမိန့်အတိုင်း) ကိုသင်စိတ်ကြိုက်ပြုလုပ်နိုင်သည်။ Usort () function ကိုပေါင်းစပ်ပြီး, သင်ပြောင်းလွယ်ပြင်လွယ်တရုတ် arrays ကိုပြောင်းလွယ်ပြင်လွယ်နိုင်ပါတယ်။ ဥပမာအားဖြင့်:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 自定义ရေှးချယ်函数,假设已知拼音或ရေှးချယ်规则</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">customSort</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$a</span></span></span><span>, </span><span><span class="hljs-variable">$b</span></span><span>) {
    </span><span><span class="hljs-comment">// 根据拼音或其他规则进行ရေှးချယ်</span></span><span>
    </span><span><span class="hljs-variable">$pinyin_a</span></span><span> = </span><span><span class="hljs-title function_ invoke__">getPinyin</span></span><span>(</span><span><span class="hljs-variable">$a</span></span><span>);  </span><span><span class="hljs-comment">// pinyin သို့ကူးပြောင်းသော function တစ်ခုရှိသည်ဆိုပါစို့</span></span><span>
    </span><span><span class="hljs-variable">$pinyin_b</span></span><span> = </span><span><span class="hljs-title function_ invoke__">getPinyin</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">$pinyin_a</span></span><span>, </span><span><span class="hljs-variable">$pinyin_b</span></span><span>);
}

</span><span><span class="hljs-comment">// အသုံးပြု自定义ရေှးချယ်函数</span></span><span>
</span><span><span class="hljs-variable">$names</span></span><span> = [</span><span><span class="hljs-string">"Zhang San"</span></span><span>, </span><span><span class="hljs-string">"li si"</span></span><span>, </span><span><span class="hljs-string">"ဝမ်ဝူ"</span></span><span>, </span><span><span class="hljs-string">"Zhao Liu"</span></span><span>, </span><span><span class="hljs-string">"Qian qi"</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">usort</span></span><span>(</span><span><span class="hljs-variable">$names</span></span><span>, </span><span><span class="hljs-string">'customSort'</span></span><span>);

</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$names</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

ဤဥပမာတွင် GetPinyin () သည်တရုတ်စာလုံးများကို pinyin သို့ပြောင်းလဲရန်အသုံးပြုသောမသိဘဲရမ်းမေးတဲ့ function တစ်ခုဖြစ်သည်။ ဤနည်းအားဖြင့်တရုတ်စာလုံးများကို Pinyin အရခွဲခြားနိုင်သည်။

3 ။ Natsort () နှင့်အခြားဇာတ်ကောင် encoding ပြောင်းလဲခြင်းကိုပေါင်းစပ်ခြင်း

Natsort () သည် ပုံမှန်အားဖြင့် Pinyin အမိန့် ကို ပုံမှန်အားဖြင့်မစဉ်းစားသော်လည်းအချို့သောကိစ္စရပ်များတွင်တရုတ်ကြိုးများကို Pinyin သို့ပထမ ဦး စွာပြောင်းလဲနိုင်သည် ဤနည်းအားဖြင့်သင်သည်တရုတ်စာလုံးများကို Pinyin အမိန့်ဖြင့်ခွဲနိုင်သည်။

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-keyword">require</span></span><span> </span><span><span class="hljs-string">'vendor/autoload.php'</span></span><span>;

</span><span><span class="hljs-keyword">use</span></span><span> </span><span><span class="hljs-title">Overtrue</span></span><span>\</span><span><span class="hljs-title">Pinyin</span></span><span>\</span><span><span class="hljs-title">Pinyin</span></span><span>;

</span><span><span class="hljs-variable">$pinyin</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">Pinyin</span></span><span>();

</span><span><span class="hljs-comment">// တရုတ်ခင်းကျင်းမှုရှိတယ်ဆိုပါစို့</span></span><span>
</span><span><span class="hljs-variable">$names</span></span><span> = [</span><span><span class="hljs-string">"Zhang San"</span></span><span>, </span><span><span class="hljs-string">"li si"</span></span><span>, </span><span><span class="hljs-string">"ဝမ်ဝူ"</span></span><span>, </span><span><span class="hljs-string">"Zhao Liu"</span></span><span>, </span><span><span class="hljs-string">"Qian qi"</span></span><span>];

</span><span><span class="hljs-comment">// တရုတ်ကို Pinyin သို့ပြောင်းပါ</span></span><span>
</span><span><span class="hljs-variable">$names_pinyin</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(function(</span><span><span class="hljs-variable">$name</span></span><span>) </span><span><span class="hljs-keyword">use</span></span><span> ($</span><span><span class="hljs-title">pinyin</span></span><span>) {
    </span><span><span class="hljs-title">return</span></span><span> $</span><span><span class="hljs-title">pinyin</span></span><span>-&gt;</span><span><span class="hljs-title">permalink</span></span><span>($</span><span><span class="hljs-title">name</span></span><span>);
}, </span><span><span class="hljs-variable">$names</span></span><span>);

</span><span><span class="hljs-comment">// အသုံးပြု natsort ရေှးချယ်拼音</span></span><span>
</span><span><span class="hljs-title function_ invoke__">natsort</span></span><span>(</span><span><span class="hljs-variable">$names_pinyin</span></span><span>);

</span><span><span class="hljs-comment">// 输出ရေှးချယ်后的中文</span></span><span>
</span><span><span class="hljs-variable">$sorted_names</span></span><span> = [];
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$names_pinyin</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">$sorted_names</span></span><span>[] = </span><span><span class="hljs-variable">$names</span></span><span>[</span><span><span class="hljs-variable">$key</span></span><span>];
}

</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$sorted_names</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

ဤတွင်ကျွန်ုပ်တို့သည်တရုတ်စာလုံးများကို pinyin သို့ပြောင်းလဲရန်နှင့် Pinyin မှတစ်ဆင့် pinyin မှတစ်ဆင့် sort to pinyin မှတစ်ဆင့် sort to pinyin မှတစ်ဆင့် Sypiness ကို Solyin မှကူးယူပါ။

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

Natsort () သည်အလွန်အစွမ်းထက်သောလုပ်ဆောင်မှုသည်အလွန်အစွမ်းထက်သောလုပ်ဆောင်မှုတစ်ခုဖြစ်သည်။ ဤပြ problem နာကိုဖြေရှင်းရန်သင်ရွေးချယ်နိုင်သည်။

  1. Collator Class ကိုအသုံးပြုပြီးတရုတ် pinyin အရခွဲခြားနိုင်သည်။

  2. sorting ယုတ္တိဗေဒကိုအပြည့်အဝထိန်းချုပ်မှုဖြင့်စိတ်ကြိုက် sorting လုပ်ဆောင်ချက်များကိုရေးပါ။

  3. Natsort () နှင့် Pinyin ကူးပြောင်းခြင်းစာကြည့်တိုက်ကိုပေါင်းစပ်ပြီးတရုတ်ကို Pinyin သို့ပထမ ဦး စွာကူးယူပါ။

ကွဲပြားသောဖြေရှင်းနည်းများသည်မတူညီသောလိုအပ်ချက်များနှင့်လိုက်လျောညီထွေဖြစ်အောင်လုပ်ခြင်း, developer များကတရုတ်စာလုံးများကိုအမှန်တကယ်အခြေအနေများနှင့်အညီအသင့်တော်ဆုံးဖြေရှင်းနည်းကိုရွေးချယ်နိုင်သည်။