လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Boolean သည် array_diff () တွင်ပုံမှန်မဟုတ်သောအပြုအမူသည်အဘယ်ကြောင့် ()?

Boolean သည် array_diff () တွင်ပုံမှန်မဟုတ်သောအပြုအမူသည်အဘယ်ကြောင့် ()?

M66 2025-06-06

Daily PHP ပရိုဂရမ်တွင် Array_diff () တွင် array_diff () သည်အလွန်လက်တွေ့ကျသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ သို့သော် developer များစွာသည်ဤလုပ်ဆောင်မှုကိုအသုံးပြုသောအခါထူးဆန်းသောအခြေအနေကိုကြုံတွေ့ရနိုင်သည်။

ဘာတွေဖြစ်နေတာလဲ? အတူတူအကြောင်းပြချက်တွေကိုလေ့လာကြည့်ရအောင်။

1 ။ ရိုးရှင်းသောဥပမာ - boolean တန်ဖိုးများကိုချွင်းချက်အပြုအမူ

အောက်ပါကုဒ်ကိုကြည့်ရအောင်။

 $a = [true, false];
$b = [0];

$result = array_diff($a, $b);
print_r($result);

သင်သည် မှန်ကန်သော နှင့် မှားယွင်းသောမှားယွင်းမှုများ သည် ဒေါ်လာခ မပါ 0 င ်ကြောင်း အလိုအလျောက်ထင်ကောင်းထင်လိမ့်မည်။

 Array
(
    [0] => 1
)

သင်အနည်းငယ်ရှုပ်ထွေးပါသလား အဘယ်ကြောင့် မှားယွင်းသော filtered ဖြစ်ပါတယ်? ပြီးတော့ ဒါက ကိန်းဂဏန်း တစ်ခု ဖြစ်လာတယ်။ ဒီပြ problem နာကိုတဖြည်းဖြည်းဖြုတ်ကြရအောင်။

2 ။ array_diff () အကျင့်ကိုကျင့်

ပထမ ဦး စွာကျွန်ုပ်တို့သည် array_diff ၏အခြေခံအပြုအမူကိုနားလည်ရန်လိုအပ်သည်။ တရားဝင် PHP စာရွက်စာတမ်း များ၏ညွှန်ကြားချက်များအရ -

array_diff () တန်ဖိုးများသည်တန်းတူရှိမရှိစစ်ဆေးရန် "တင်းကျပ်သောမတူသောနှိုင်းယှဉ်ချက်" (==) ကိုအသုံးပြုသည်။

ဆိုလိုသည်မှာ array_diff () သည် တန်ဖိုးများကိုနှိုင်းယှဉ်ရန် congruent ကို မသုံးပါ။ သို့သော်နှစ်ဆတန်းတူသင်္ကေတကိုအသုံးပြုသည်

ဆိုလိုသည်မှာအောက်ပါတန်ဖိုးများကို "တန်းတူ" ဟုသတ်မှတ်ခြင်းကိုဆိုလိုသည်။

 false == 0;       // true
true == 1;        // true
true == "1";      // true
false == "";      // true

ကျွန်ုပ်တို့၏ဥပမာတွင် မှားယွင်းသောမှားယွင်းခြင်းကို 0 င်တန်းတူတရားစီရင်ခြင်းကိုခံရပြီးရလဒ်မှ array_diff () မှလွဲ. ဖယ်ထုတ်ထားသည်။

3 ။ Boolean တန်ဖိုးများကိုအလိုအလျောက်အမျိုးအစားသို့ကူးပြောင်းလိမ့်မည်

နောက်အသေးစိတ်အချက်မှာ Array_diff () သည် array_diff () မှပြန်လာသော array () သည်ဂဏန်းတန်ဖိုးများနှင့်ပါ 0 င်သည်။ ဥပမာအားဖြင့်:

 var_dump(true);  // ထုတ်လုပ်ခြင်း bool(true)
echo true;       // ထုတ်လုပ်ခြင်း 1

Print_r () တွင် output တွင် output သည် boolean true သည် 1 သို့ပြောင်းလဲသွားသည်။ ဒါကြောင့်သင်ဟာရလဒ်မှာ 1 ပေါ်လာတာကိုတွေ့ရလိမ့်မယ်

4 ။ ဒီပြ problem နာကိုဘယ်လိုရှောင်ရမလဲ။

ဒေတာအမျိုးအစားများကိုသင်နှိုင်းယှဉ်ရန်လိုအပ်ပါက (ဥပမာအားဖြင့်သင်သည် စစ်မှန်သော နှင့် 1 ) ကိုခွဲခြားရန်လိုအပ်သည်, သင်သည် array_udiff () ကို သုံး. Custom နှိုင်းယှဉ်မှု function နှင့် ပူးပေါင်း. ပူးပေါင်းဆောင်ရွက်နိုင်သည်။

 $a = [true, false];
$b = [0];

$result = array_udiff($a, $b, function($x, $y) {
    return ($x === $y) ? 0 : 1;
});

print_r($result);

ထုတ်လုပ်မှု -

 Array
(
    [0] => 1
    [1] => 
)

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

အကယ်. သင်သည်ဤတန်ဖိုးများကိုပိုမိုရှင်းလင်းစွာခွဲခြားရန်လိုအပ်ပါက boolean အမျိုးအစားကိုယ်စားပြုမှုကိုထိန်းသိမ်းရန်လိုအပ်ပါက Var_export () ကို ရလဒ်ရယူရန်ပေါင်းစပ်နိုင်သည်။

 var_export($result);

5 ။ နိဂုံး: သတိနှင့်အတူကိုင်တွယ်နှင့်တင်းကျပ်စွာနှိုင်းယှဉ်ပါ

ဖြစ်ရပ်မှန် များ၏ပုံမှန်အပြုအမူသည်အခြေအနေများစွာတွင်အလွန်ထိရောက်နိုင်သော်လည်း Boolean တန်ဖိုးများ, ၎င်းသည် PHP တွင်အားနည်းနေသောအမျိုးအစားများကြောင့်ဖြစ်ရတဲ့ပုံမှန်ထောင်ချောက်တစ်ခုလည်းဖြစ်သည်။

Development အမျိုးအစားများနှင့် ပတ်သက်. တင်းကျပ်သောလိုအပ်ချက်များကိုသင်၌တင်းကျပ်သောလိုအပ်ချက်များရှိပါက default array_diff () ကို အသုံးပြုခြင်း ကိုရှောင်ကြဉ်ပါ။