PHP တွင် array_count_values () function () function ကို array ရှိတန်ဖိုးများအားလုံး၏ဖြစ်ပျက်မှုနှုန်းကိုတွက်ချက်ရန်အသုံးပြုသည်။ သို့သော်သင်သည်ဤလုပ်ဆောင်မှုကိုအသုံးပြုသောအခါတရုတ်ကြိုးများကိုကိုင်တွယ်ရန်ဤလုပ်ဆောင်မှုကိုအသုံးပြုသောအခါ, ဤဆောင်းပါးသည်ဤပြ problem နာကိုမည်သို့ဖြေရှင်းရမည်ကိုလေ့လာပြီးဖြေရှင်းနည်းများကိုလေ့လာပါမည်။
Array_count_VARIT_VARIT_VARIT_VARITEUSS ၏အဓိကလုပ်ဆောင်ချက်သည် array တွင်ပေါ်လာသည့်ကွဲပြားခြားနားသောတန်ဖိုးများကိုပြန်လည်ရောက်ရှိရန်ဖြစ်သည်။ အင်္ဂလိပ်အက္ခရာများနှင့်ဆက်ဆံရာတွင်ဤလုပ်ဆောင်မှုသည်ကောင်းမွန်စွာအလုပ်လုပ်သည်။ သို့သော်တရုတ်ကြိုးများမှာမမျှော်လင့်သောအပြုအမူများရှိနိုင်သည်။ အကြောင်းပြချက်များသောအားဖြင့်ဇာတ်ကောင် encoding ပြ problem နာဖြစ်ပါတယ်။
PHP သည် default အားဖြင့်ကြိုးများပြုလုပ်ရန် ISO-8859-1 encoding ကိုအသုံးပြုသည်။ သို့သော်တရုတ်စာလုံးများကို UTF-8 ဖြင့် encoded သည်။ ကိုက်ညီမှုမရှိသော encoding ကြောင့် array_count_values () သည် တရုတ်စာလုံးများကိုမှန်ကန်စွာမရေတွက်နိုင်ပါ။
သင့်တွင်တရုတ်ကြိုးများပါ 0 င်သောခင်းကျင်းမှုတစ်ခုရှိသည်ဆိုပါစို့။
<?php
$array = ['ပန်းသီး', 'ငှက်ပျောသီး', 'ပန်းသီး', 'အခွံပွလိမ္မော်သီး', 'ငှက်ပျောသီး', 'ပန်းသီး'];
print_r(array_count_values($array));
?>
မျှော်လင့်ထားသည့်ရလဒ်မှာ -
Array
(
[ပန်းသီး] => 3
[ငှက်ပျောသီး] => 2
[အခွံပွလိမ္မော်သီး] => 1
)
သို့သော်အချို့သောကိစ္စရပ်များတွင်သင်သည်မှားယွင်းသော output သို့မဟုတ် barbled code ကိုကြုံတွေ့ရနိုင်သည်။
ဤပြ problem နာကိုဖြေရှင်းရန်အောက်ပါနည်းလမ်းများကိုသုံးနိုင်သည်။
တရုတ်ကြိုးကြိုးများကိုမှန်ကန်စွာပြုလုပ်နိုင်ရန်သေချာစေရန် MB_Convert_encoding () သို့မဟုတ် mb_strining () function ကိုသင်ပထမ ဦး ဆုံး အသုံးပြု. encoding ပြ problems နာများကိုရှောင်ရှားရန် string ကို string ကိုပြောင်းလဲရန်ပထမ ဦး ဆုံးအသုံးပြုနိုင်သည်။
ဒီမှာအဖြေတစ်ခုပါ။
<?php
// အသုံးပြုရန်သေချာအောင်လုပ်ပါUTF-8ကုဒ်
$array = ['ပန်းသီး', 'ငှက်ပျောသီး', 'ပန်းသီး', 'အခွံပွလိမ္မော်သီး', 'ငှက်ပျောသီး', 'ပန်းသီး'];
// ကူးပြောင်းUTF-8ကုဒ်
$array = array_map(function($item) {
return mb_convert_encoding($item, 'UTF-8', 'auto');
}, $array);
// အသုံးပြု array_count_values လုပ်ဆောင်ချက်
print_r(array_count_values($array));
?>
၎င်းသည်တရုတ်ကြိုးများကို UTF-8 encoding ကို အသုံးပြု. မကိုမာသော encoding ပြ problem နာကိုရှောင်ရှားရန်အသုံးပြုသည်။
အကယ်. နေရာများသို့မဟုတ်အခြားဇာတ်ကောင်များသည်စာရင်းအင်းများကိုအကျိုးသက်ရောက်သည်ကိုသင်တွေ့ရှိပါကဤဆီမသက်ဆိုင်သောစာလုံးများကိုစစ်ထုတ်ရန် Preg_replace () function ကိုသုံးနိုင်သည်။
<?php
$array = ['ပန်းသီး', 'ငှက်ပျောသီး', 'ပန်းသီး', 'အခွံပွလိမ္မော်သီး', 'ငှက်ပျောသီး', 'ပန်းသီး'];
// တရုတ်မဟုတ်သောစာလုံးများကိုဖယ်ရှားပါ
$array = array_map(function($item) {
return preg_replace('/[^\x{4e00}-\x{9fa5}]/u', '', $item);
}, $array);
print_r(array_count_values($array));
?>
အကယ်. သင်သည်သင်၏ပတ် 0 န်းကျင်ရှိ Mbstring extension ကို install လုပ်ပြီးပါက MB_Strlen () ကဲ့သို့သော Multibyte strings function များကိုအသုံးပြုခြင်းသည်ရလဒ်ကောင်းများရနိုင်သည်။ Multibyte ဇာတ်ကောင်များ၏ဝိသေသလက္ခဏာများနှင့်ကိုက်ညီမှုရှိစေရန်ဤလုပ်ဆောင်ချက်များကိုသင်အသုံးပြုနိုင်သည်။
<?php
$array = ['ပန်းသီး', 'ငှက်ပျောသီး', 'ပန်းသီး', 'အခွံပွလိမ္မော်သီး', 'ငှက်ပျောသီး', 'ပန်းသီး'];
// အသုံးပြု mb_strlen() အဆိုပါ string ကို၏အရှည်ဆုံးဖြတ်ရန်
$array = array_map(function($item) {
return mb_convert_encoding($item, 'UTF-8', 'auto');
}, $array);
print_r(array_count_values($array));
?>
PHP တွင်တရုတ်ကြိုးများကိုလုပ်ဆောင်ရန် array_count_VARITEUSE () ကို အသုံးပြုသောအခါဘုံပြ problem နာသည်ကိုက်ညီသည့်ဇာတ်ကောင် encoding ဖြစ်သည်။ ဤပြ problem နာကိုရှောင်ရှားရန်တရုတ်စာလုံးများကိုအောက်ပါအဆင့်များမှတဆင့်စနစ်တကျပြုလုပ်နိုင်ရန်သေချာစေနိုင်သည်။
utf-8 ကို သုံး. strings အားလုံးကို encoded နေကြသည်သေချာအောင်လုပ်ပါ။
ကြိုးများမလုပ်ဆောင်မီ, အက်ခရာ encoding ပြောင်းလဲခြင်းအတွက်သင့်လျော်သော function ကိုသုံးပါ။
တရုတ်စာလုံးများသာပါ 0 င်ရန်သာလက်မခံနိုင်သောစာလုံးများကိုစစ်ထုတ်ပါ။
အထက်ပါနည်းလမ်းအားဖြင့်, array_count_values () တွင်တရုတ်ကြိုးများကိုကိုင်တွယ်ရန်ပြ problem နာကိုအောင်မြင်စွာဖြေရှင်းနိုင်သည်။