PHP သည်ကျယ်ပြန့်စွာအသုံးပြုသော server-side programming languities ဖြစ်သည်။ array_count_valuates function သည်အလွန်အသုံးများသော functioning တစ်ခုဖြစ်သည်။ Array_count_VARITES_VARITESTIRE function ၏ function သည် array ရှိ element အားလုံး၏အဖြစ်အပျက်များကိုရေတွက်ရန်ဖြစ်သည်။ ၎င်းသည်မူလခင်းကျင်းမှုရှိသည့်သော့ချက်ဖြစ်ပြီးတန်ဖိုးသည် element ၏အဖြစ်အပျက်များ၏အရေအတွက်ဖြစ်သည်။ သို့သော်အရာဝတ်ထုများပါ 0 င်သော array များနှင့်ဆက်ဆံရာတွင်မမျှော်လင့်သောအပြုအမူအချို့ကိုကြုံတွေ့ရနိုင်သည်,
Array_count_values function ၏အခြေခံလုပ်ဆောင်ချက်သည်ခင်းကျင်းမှုမှတစ်ဆင့် array မှတစ်ဆင့်ဆက်နွယ်ပြီးဒြပ်စင်တစ်ခုစီ၏အရေအတွက်ကိုရေတွက်ရန်နှင့်ရလဒ်ကိုသော့ချက်တန်ဖိုးအတွဲများပုံစံဖြင့်ပြန်လည်ရောက်ရှိသည်။ ဥပမာအားဖြင့်, ကျွန်ုပ်တို့တွင်ရိုးရှင်းသောခင်းကျင်းမှုရှိသည်ဆိုပါစို့။
$array = ['apple', 'banana', 'apple', 'orange', 'banana', 'banana'];
$result = array_count_values($array);
print_r($result);
output ကိုဖြစ်လိမ့်မည်:
Array
(
[apple] => 2
[banana] => 3
[orange] => 1
)
သင်မြင်နိုင်သည့်အတိုင်း Array_Count_VALICT_VALUTESED သည် element တစ်ခုစီ၏အဖြစ်အပျက်များကိုမှန်ကန်စွာရေတွက်သည်။
PHP Array တွင်အရာဝတ်ထုများကိုသိမ်းဆည်းသည့်အခါ array_count_valuating function သည်မျှော်လင့်ထားသည့်အတိုင်းပြုမူမည်မဟုတ်ပါ။ ဘာကြောင့်လဲဆိုတော့အရာဝတ်ထုတွေကိုရည်ညွှန်းပြီးဖြတ်သန်းသွားပြီ, PHP ရှိအရာဝတ်ထုများကို၎င်းတို့၏မှတ်ဉာဏ်လိပ်စာ (သူတို့၏တန်ဖိုးအတိုင်း) နှင့်နှိုင်းယှဉ်သည်။ ဆိုလိုသည်မှာအရာဝတ်ထုနှစ်ခုသည်အတူတူပင်ကြည့်လျှင်ပင်သူတို့၏မှတ်ဉာဏ်လိပ်စာများသည်ကွဲပြားခြားနားပြီး၎င်းတို့သည်ကွဲပြားခြားနားသောအရာဝတ်ထုများကိုထည့်သွင်းစဉ်းစားလိမ့်မည်။
ရိုးရှင်းတဲ့ဥပမာတစ်ခုကိုကြည့်ရအောင်။
class Fruit {
public $name;
public function __construct($name) {
$this->name = $name;
}
}
$apple1 = new Fruit('apple');
$apple2 = new Fruit('apple');
$array = [$apple1, $apple2, $apple1];
$result = array_count_values($array);
print_r($result);
output ရလဒ် -
Array
(
Object(Fruit)#1 => 2
Object(Fruit)#2 => 1
)
ကျွန်ုပ်တို့တွင်အမည်တူသော Apple Objects နှစ်ခုရှိသော်လည်း၎င်းတို့သည်ကွဲပြားခြားနားသောသာဓကနှစ်ခုဖြစ်သောကြောင့် (I.E. , ကွဲပြားခြားနားသောမှတ်ဥာဏ်လိပ်စာများ), array_count_valuates သည် ၎င်းတို့ကိုကွဲပြားသောဒြပ်စင်များအဖြစ်သတ်မှတ်ပြီး၎င်းတို့ကိုသီးခြားစီဟုသတ်မှတ်သည်။
array_count_values များ ကိုအသုံးပြုပြီးအရာဝတ်ထုများပါ 0 င်သောအရာဝတ်ထုများကိုလုပ်ဆောင်ရန်ကြိုးစားသောအခါအရာဝတ်ထုတစ်ခုစီ၏မှတ်ဉာဏ်လိပ်စာကိုဆိုလိုသည်။ ၎င်းသည်အောက်ပါပြ problems နာများကိုဖြစ်ပေါ်စေနိုင်သည်။
အကယ်. သင့်တွင်အရာဝတ်ထုတူညီသောအကြောင်းအရာများနှင့်အတူအရာ 0 န်ာတာများရှိပါက၎င်းတို့ကိုကွဲပြားခြားနားသောအသုံးအနှုန်းများအဖြစ်သတ်မှတ်ခံရလိမ့်မည်
အကယ်. သင်သည်တူညီသောအတန်းအစား၏အရာဝတ်ထုဖြစ်ရပ်မျိုးစုံကိုအသုံးပြုပါကဤအရာဝတ်ထုများ၏ဂုဏ်သတ္တိများသည်အတိအကျတူညီနေလျှင်ပင် array_count_values သည် ၎င်းတို့အားတူညီသောအရာများကိုတူညီသောအရာများကိုတူညီသော element များအဖြစ်ဆက်ဆံလိမ့်မည်မဟုတ်ပါ။
array ပါဝင်သောအရာဝတ်ထုများကိုမှန်ကန်စွာလုပ်ဆောင်ရန်အောက်ပါနည်းလမ်းများကိုအောက်ပါနည်းလမ်းများကိုရယူနိုင်ပါသည်။
__TOSTRING နည်းလမ်းကိုပြန်လည်ရေးပါ ။
အကယ်. အရာဝတ်ထုတွင်ထူးခြားသော string တစ်ခု၏ကိုယ်စားပြုမှုကိုကိုယ်စားပြုပါကအရာဝတ်ထု၏ __tostTring method ကို object လုပ်ရန်အရာဝတ်ထု၏ __tostring method ကို override လုပ်နိုင်သည် ။
class Fruit {
public $name;
public function __construct($name) {
$this->name = $name;
}
public function __toString() {
return $this->name;
}
}
$apple1 = new Fruit('apple');
$apple2 = new Fruit('apple');
$array = [$apple1, $apple2, $apple1];
$result = array_count_values($array);
print_r($result);
output ရလဒ်ဖြစ်လိမ့်မည်:
Array
(
[apple] => 3
)
၎င်းသည်သင့်အားနာမည်တူသည့်အရာဝတ်ထုများကိုမှန်ကန်စွာရေတွက်ရန်ခွင့်ပြုသည်။
array_map နှင့် serialize ကို သုံးပါ ။
__tostTring method ကိုအားမလွယ်ကူလိုပါကအရာဝတ်ထုကို string တစ်ခုသို့ပြောင်းလဲရန် serialize ကို သုံး နိုင်သည်။
$array = [serialize($apple1), serialize($apple2), serialize($apple1)];
$result = array_count_values($array);
print_r($result);
output ကိုဖြစ်လိမ့်မည်:
Array
(
[O:6:"Fruit:..."] => 3
)
ဤနည်းလမ်းတွင်ကျွန်ုပ်တို့သည်အရာဝတ်ထုကို serialize အားဖြင့်ထူးခြားသော string တစ်ခုအဖြစ်ပြောင်းလဲခြင်းဖြင့် array_count_valuates သည် တူညီသောအရာဝတ်ထုအရေအတွက်ကိုမှန်ကန်စွာတွက်ချက်နိုင်ရန်အတွက်ထူးခြားသော string တစ်ခုအဖြစ်ပြောင်းလဲနိုင်သည်။
array_count_values ကို သုံးသောအခါ array_count_count_valuates သည် အရာဝတ်ထုများကိုတူညီသောအကြောင်းအရာများနှင့်နှိုင်းယှဉ်လျှင်အရာဝတ်ထုများကိုတူညီသောအကြောင်းအရာများဖြင့်မရေတွက်နိုင်ပါ။ ဤပြ problem နာကို __tostring နည်းလမ်းကို overwrite လုပ်ခြင်းသို့မဟုတ် Serialize နည်းလမ်းကိုအသုံးပြုခြင်းအားဖြင့်ထိရောက်စွာဖြေရှင်းနိုင်ပြီး array_count_valuates သည် အရာဝတ်ထုခင်းကျင်းအတွင်းရှိဒြပ်စင်များမှန်ကန်စွာရေတွက်သည်။