PHP တွင် Array များသည်အလွန်အစွမ်းထက်သောဒေတာများ, ကိန်းဂဏန်းများ, သို့သော်ကျွန်ုပ်တို့သည်အရာဝတ်ထုများသို့မဟုတ်အရင်းအမြစ်များကိုခင်းကျင်းရန်သော့များအနေဖြင့်အသုံးပြုသောအခါမျှော်လင့်ချက်များနှင့်မကိုက်ညီသောအရာတစ်ခုခုကိုရှာဖွေရန်ခက်ခဲသောအမှားအယွင်းများသို့မဟုတ်အပြုအမူများကိုကြုံတွေ့ရနိုင်သည်။ ဤဆောင်းပါးသည် PHP ရှိ array keys များအဖြစ်အသုံးပြုခြင်းကြောင့်ဖြစ်ပေါ်လာသောပြ problems နာများကိုလေ့လာသုံးသပ်ပြီးဖြေရှင်းနည်းများပေးနိုင်သည်။
PHP တွင် array ၏သော့များကို Hashing (hash) ဖြင့်စီမံသည်။ ကိန်းဂဏန်းများသို့မဟုတ်ကြိုးများကိုသော့များအဖြစ်အသုံးပြုသောအခါ PHP သည်၎င်း၏ပြည်တွင်းခန်းမထဲတွင် 4 င်း၏ပြည်တွင်းခန်းမထဲတွင်သော့များကိုတိုက်ရိုက်စီမံနိုင်သည်။ သို့သော်အရာဝတ်ထုတစ်ခုသည် Array ခလုတ်တစ်ခုဖြစ်သောအခါ PHP သည် __Tostring () နည်းလမ်းသို့မဟုတ်အထူးနှိုင်းယှဉ်ချက်နည်းလမ်းအချို့ကိုမသုံးပါက PHP သည် hash calloculation များအတွက်အရာဝတ်ထုတန်ဖိုးကိုတိုက်ရိုက်မသုံးနိုင်ပါ။ ဤ နည်းလမ်းများမရှိဘဲ PHP သည်အရာဝတ်ထု၏ hash တန်ဖိုးကို array key တစ်ခုအဖြစ်အသုံးပြုလိမ့်မည်။
<?php
class Person {
public $name;
public function __construct($name) {
$this->name = $name;
}
}
$obj1 = new Person("John");
$obj2 = new Person("Doe");
$array = [];
$array[$obj1] = "First object";
$array[$obj2] = "Second object";
// ဖြစ်နိုင်သော output ကို:Array ( [Person Object] => Second object )
var_dump($array);
?>
အပေါ်ကဥပမာမှာ $ obj1 နဲ့ $ obj2 အတွက်မတူညီတဲ့အရာဝတ်ထုတွေကိုဖန်တီးပေမယ့် PHP ဟာသူတို့ရဲ့ hash တန်ဖိုးတွေကို array အတွက်သော့တွေအဖြစ်သုံးနေတုန်းပဲ။
ဤပြ problem နာကိုဖြေရှင်းရန်အရာဝတ်ထု၏သော့တစ်ခုစီတွင်ထူးခြားသည့်အတွက်အရာဝတ်ထု၏ဂုဏ်သတ္တိများ ( ____tostring ( __tost form) ကိုအသုံးပြုရန်အတွက်ထူးခြားသောအမှတ်အသားတစ်ခု (__ __tostring (__tostring (__tostring () နည်းလမ်း) ကိုအသုံးပြုရန်အကြံပြုသည်။
<?php
class Person {
public $name;
public function __construct($name) {
$this->name = $name;
}
public function __toString() {
return $this->name;
}
}
$obj1 = new Person("John");
$obj2 = new Person("Doe");
$array = [];
$array[(string)$obj1] = "First object";
$array[(string)$obj2] = "Second object";
// ထုတ်လုပ်ခြင်း:Array ( [John] => First object [Doe] => Second object )
var_dump($array);
?>
__tostring () နည်းလမ်းကိုအကောင်အထည်ဖော်ခြင်းအားဖြင့်အရာဝတ်ထုတစ်ခုစီတွင်ထူးခြားသောနှင့်မှတ်မိနိုင်သောကြိုးကိုယ်စားပြုမှုတစ်ခုရှိသည်။
PHP တွင်အရင်းအမြစ်သည်များသောအားဖြင့်ပြင်ပအရင်းအမြစ်များကိုရည်ညွှန်းသည် (ဥပမာဒေတာဘေ့စ်ဆက်သွယ်မှု, ဖိုင်လက်ကိုင်များစသည်တို့) ကိုရည်ညွှန်းသည်။ အရင်းအမြစ်အမျိုးအစားသည် PHP တွင်အထူးဒေတာအမျိုးအစားတစ်ခုဖြစ်ပြီး၎င်းသည်တိုက်ရိုက် hash ကိုယ်စားပြုမှုမရှိပါ, အရင်းအမြစ်များကိုအသုံးပြုရန်အတွက်အရင်းအမြစ်များကိုအသုံးပြုခြင်းသည်ပြ problems နာများဖြစ်စေနိုင်သည်။
အရင်းအမြစ်တစ်ခုကို Array ခလုတ်တစ်ခုအနေနှင့်အသုံးပြုသောအခါ PHP တွင်အရင်းအမြစ်အကြောင်းအရာများသည်အဓိကသော့ချက်ဖြစ်သည်။ ယင်းအစား PHP သည်အရင်းအမြစ်များအမျိုးအစားနှင့်ဆေးထည့်ရန်အမှတ်အသားကိုပေါင်းစပ်အသုံးပြုသည်။ သို့သော်အရင်းအမြစ်၏အမှတ်အသားသည်မတူကွဲပြားသော PPP သာဓကများကွဲပြားနိုင်သည်။ ဤအချက်သည်အရင်းအမြစ်အမျိုးအစားနှစ်မျိုး၏အချက်အလက်များကိုထိရောက်စွာနှိုင်းယှဉ်နိုင်ခြင်းကတည်းက၎င်းသည်မဖြစ်နိုင်အောင်ပြုလုပ်နိုင်သည်။
<?php
$resource1 = fopen("file1.txt", "r");
$resource2 = fopen("file2.txt", "r");
$array = [];
$array[$resource1] = "First resource";
$array[$resource2] = "Second resource";
// ဒါကပြ problems နာတွေဖြစ်စေနိုင်တယ်,ဘာဖြစ်လို့လဲဆိုတော့အရင်းအမြစ်အမှတ်အသားကွဲပြားခြားနားသောပတ်ဝန်းကျင်တွင်ကွဲပြားနိုင်သည်
var_dump($array);
?>
အရင်းအမြစ်များကိုမသုံးရန်အထူးသဖြင့်သယံဇာတအမှတ်အသားအပြောင်းအလဲများမရှင်းလင်းပါကအရင်းအမြစ်များအနေဖြင့်အရင်းအမြစ်များအဖြစ်မသုံးရန်အကြံပြုသည်။ သယံဇာတဒေတာကိုအသုံးပြုရန်သင်လိုအပ်ပါကအရင်းအမြစ်တစ်ခုတွင်အရင်းအမြစ်ကို encapsulating ကိုထည့်သွင်းစဉ်းစားပါ။
<?php
$resource1 = fopen("file1.txt", "r");
$resource2 = fopen("file2.txt", "r");
$array = [];
$array[(string)$resource1] = "First resource";
$array[(string)$resource2] = "Second resource";
var_dump($array);
?>
ဤနည်းအားဖြင့်အရင်းအမြစ်၏အမှတ်အသားသည် array keys ၏ထူးခြားမှုကိုသေချာစေသည်။
PHP သည်အရာဝတ်ထုများနှင့်အရင်းအမြစ်များကို array လုပ်ရန်သော့ချက်များအဖြစ်အသုံးပြုရန်ခွင့်ပြုသော်လည်း Hashing Mode ၏ကန့်သတ်ချက်များကြောင့်ဤအလေ့အကျင့်သည်မျှော်လင့်ချက်အချို့ကိုမြှင့်တင်ပေးနိုင်သည်။ Code ၏ထိန်းသိမ်းနိုင်မှုနှင့်တည်ငြိမ်မှုကိုသေချာစေရန်, ၎င်းကိုအကြံပြုသည်။
strings သို့မဟုတ် integers များကိုသော့များအဖြစ်အသုံးပြုပါ။
အရာဝတ်ထုတစ်ခုကိုသုံးရန်လိုပါက __TOSTRINGRING () နည်းလမ်းကိုအကောင်အထည်ဖော်ရန်စဉ်းစားနိုင်သည် ။
အရင်းအမြစ်များကို incray keys များအဖြစ်အသုံးပြုခြင်းကိုရှောင်ကြဉ်ရန်ကြိုးစားပါ။ သင်အသုံးပြုလိုပါကအရင်းအမြစ်များကိုအရာဝတ်ထုများထဲသို့ထည့်သွင်းရန်သို့မဟုတ်အရင်းအမြစ်များ၏အမှတ်အသားကိုအသုံးပြုရန်အတွက်အရင်းအမြစ်များကိုအသုံးပြုသည်။
PHP ရှိ Array ခလုတ်များအဖြစ် အသုံးပြု. ပေါ်ပေါက်လာနိုင်သည့်ပြ problems နာများနှင့်ဖြေရှင်းနည်းများကိုသင်နားလည်ရန်ဤဆောင်းပါးကသင့်အားအထောက်အကူပြုသည်။ သင့်တွင်မေးခွန်းများပိုမိုများပြားလာပါကထပ်မံဆွေးနွေးရန်လိုအပ်ပါက ကျေးဇူးပြု. စာတစ်စောင် ထား. ဆက်သွယ်ပါ။