အရာဝတ်ထုများအကြားဆက်နွယ်မှုကိုနှိုင်းယှဉ်ခြင်းကအရာဝတ်ထုကို ဦး စားပေး PHP applications များကိုတီထွင်သည့်အခါအထူးသဖြင့်အရာဝတ်ထုနှစ်ခုတန်းတူကိုဆုံးဖြတ်သည့်အခါအလေ့အကျင့်တစ်ခုဖြစ်သည်။ ဤဆောင်းပါးသည် PHP တွင်အရာဝတ်ထုနှိုင်းယှဉ်မှု၏နက်နဲသောနည်းလမ်းများနှင့်အခြေခံမူများကိုလေ့လာလိမ့်မည်။
PHP တွင်ကျွန်ုပ်တို့သည် (ဥပမာ - ==,! ===, ===, ===, ===, ===, ===, ===) ကိုသုံးနိုင်သည်။ ဤအော်ပရေတာများသည်အရာဝတ်ထုနှစ်ခုသည်တန်းတူဖြစ်ပြီးတူညီသောအမျိုးအစားနှင့်တူညီမှုရှိမရှိဆုံးဖြတ်ရန်ကူညီနိုင်သည်။ ဤတွင်နှိုင်းယှဉ်အော်ပရေတာတစ်ခုစီ၏အသေးစိတ်ဖော်ပြချက်ဖြစ်သည်။
"==" အော်ပရေတာကိုအသုံးပြုသောအခါ PHP သည်အရာဝတ်ထုနှစ်ခု၏ပိုင်ဆိုင်မှုတန်ဖိုးများသည်အတူတူပင်ဖြစ်သည်။ ထပ်တူပြန်ပို့ပါ။
$obj1 = new stdClass();
$obj2 = new stdClass();
$obj1->name = 'Zhang San';
$obj1->age = 20;
$obj2->name = 'Zhang San';
$obj2->age = 20;
if ($obj1 == $obj2) {
echo 'နှစ်ခုအရာဝတ်ထုတန်းတူဖြစ်ကြသည်';
} else {
echo 'နှစ်ခုအရာဝတ်ထုတန်းတူကြသည်မဟုတ်';
}
အထက်ဖော်ပြပါကုဒ်များတွင်အရာဝတ်ထုနှစ်ခု၏ attribute တန်ဖိုးများသည်အတူတူပင်ဖြစ်သည့်အတွက် "အရာဝတ်ထုနှစ်ခုသည်တန်းတူ" ဖြစ်သည်။
"! =" အော်ပရေတာသည်အရာဝတ်ထုနှစ်ခု၏ attribute တန်ဖိုးများကိုတန်းတူမဟုတ်ကြောင်းစစ်ဆေးရန်အသုံးပြုသည်။ တန်းတူမဟုတ်လျှင်စစ်မှန်ပါ။
$obj1 = new stdClass();
$obj2 = new stdClass();
$obj1->name = 'Zhang San';
$obj1->age = 20;
$obj2->name = 'li si';
$obj2->age = 30;
if ($obj1 != $obj2) {
echo 'နှစ်ခုအရာဝတ်ထု၏ attribute တန်ဖိုးများတန်းတူမဟုတ်ကြဘူး';
} else {
echo 'နှစ်ခုအရာဝတ်ထု၏ attribute တန်ဖိုးများတန်းတူဖြစ်ကြသည်';
}
attribute နှစ်ခု၏ attribute တန်ဖိုးများကွဲပြားခြားနားသောကြောင့် code သည် "အရာဝတ်ထုနှစ်ခု၏ attribute တန်ဖိုးများသည်တန်းတူမဟုတ်ပါ။
"===" အော်ပရေတာသည်အရာဝတ်ထုနှစ်ခုသည်တူညီသောအရာဝတ်ထုတစ်ခုတည်းသောအရာဝတ်ထုတစ်ခုဟုတ်မဟုတ်စစ်ဆေးရန်အသုံးပြုသည်။ i.e.
$obj1 = new stdClass();
$obj2 = $obj1;
if ($obj1 === $obj2) {
echo 'နှစ်ခုအရာဝတ်ထုတူညီတဲ့အရာဝတ်ထုဖြစ်ကြသည်';
} else {
echo 'နှစ်ခုအရာဝတ်ထုတူညီသောအရာဝတ်ထုမဟုတ်ပါဘူး';
}
အထက်ဖော်ပြပါကုဒ်သည် $ Obj2 သည်ဒေါ်လာ OBJ1 ၏မှတ်ဉာဏ်လိပ်စာကိုမှတ်မိသောကြောင့် "အရာဝတ်ထုနှစ်ခုသည်တူညီသောအရာဝတ်ထုတစ်ခုဖြစ်သည်"
အဆိုပါ "! ==" အော်ပရေတာသည် "===" ၏အချိုးကျအော်ပရေတာဖြစ်ပြီးအရာဝတ်ထုနှစ်ခုသည်တူညီသောအရာဝတ်ထုမဟုတ်သောအရာတစ်ခုမရှိမရှိဆုံးဖြတ်ရန်အသုံးပြုသည်။ သူတို့ကွဲပြားခြားနားသောမှတ်ဉာဏ်လိပ်စာများကိုညွှန်ပြပါကစစ်မှန်ပါ။
$obj1 = new stdClass();
$obj2 = $obj1;
$obj3 = new stdClass();
if ($obj1 !== $obj3) {
echo 'နှစ်ခုအရာဝတ်ထုတူညီသောအရာဝတ်ထုမဟုတ်ပါဘူး';
} else {
echo 'နှစ်ခုအရာဝတ်ထုတူညီတဲ့အရာဝတ်ထုဖြစ်ကြသည်';
}
$ OBJ1 နှင့် $ OBJ3 အမှတ်သည်မတူကွဲပြားသောမှတ်ဉာဏ်လိပ်စာများသို့အမှတ်အသားပြုရန်ကုဒ်သည် "အရာဝတ်ထုနှစ်ခုသည်တူညီသောအရာဝတ်ထုမဟုတ်" ပါလိမ့်မည်။
PHP သည်အရာဝတ်ထုနှိုင်းယှဉ်မှုကိုလုပ်ဆောင်သောအခါအရာဝတ်ထုကိုအရာဝတ်ထုတစ်ခုသို့ပြောင်းလဲရန်နှင့်နှိုင်းယှဉ်ရန်အရာဝတ်ထု၏ __tostring () နည်းလမ်းကိုပုံမှန်အားဖြင့်ခေါ်ဆိုလိမ့်မည်။ အကယ်. အရာဝတ်ထုသည် __tostring () နည်းလမ်းကိုအကောင်အထည်ဖော်မထားပါကဆိုးဝါးသောအမှားကိုထုတ်ပေးလိမ့်မည်။ ဤပြ problem နာကိုရှောင်ရှားရန်အရာဝတ်ထုနှိုင်းယှဉ်မှုများပြုလုပ်သောအခါအရာဝတ်ထုကိုအရာဝတ်ထုကိုအကောင်အထည်ဖော်ရန်သေချာစေရန်အကြံပြုသည်။
မှတ်ချက်ချသည်မှာ PHP သည်အရာဝတ်ထုများကိုနှိုင်းယှဉ်သောအခါ၎င်းသည်အရာဝတ်ထု၏ attribute တန်ဖိုးများကိုနှိုင်းယှဉ်မည်ဖြစ်သော်လည်းထိုနည်းလမ်းများကိုနှိုင်းယှဉ်မည်မဟုတ်။ အကယ်. အရာဝတ်ထုနှစ်ခုသည်တူညီသောဂုဏ်သတ္တိများရှိသော်လည်းကွဲပြားသောနည်းလမ်းများရှိသော်လည်း PHP သည်၎င်းတို့အားတန်းတူညီမျှဖြစ်ရန်စဉ်းစားနေ ဦး မည်။
ဤဆောင်းပါးသည် PHP နှင့်ဆက်စပ်အော်ပရေတာများတွင်အရာဝတ်ထုများကိုနှိုင်းယှဉ်ခြင်းအတွက်ဘုံနည်းလမ်းများကိုမိတ်ဆက်ပေးသည် (==,! =, ==, ==) အရာဝတ်ထုများကိုနှိုင်းယှဉ်သောအခါကျွန်ုပ်တို့သည်အရာဝတ်ထု၏ပိုင်ဆိုင်မှုတန်ဖိုးများကိုအာရုံစိုက်သင့်သည်။ တစ်ချိန်တည်းမှာပင်နှိုင်းယှဉ်နေစဉ်အတွင်းအမှားများကိုရှောင်ရှားရန်အရာဝတ်ထု __tostring () နည်းလမ်းကိုသေချာအောင်လုပ်ပါ။