Daily PHP ပရိုဂရမ်တွင် Array_diff () တွင် array_diff () သည်အလွန်လက်တွေ့ကျသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ သို့သော် developer များစွာသည်ဤလုပ်ဆောင်မှုကိုအသုံးပြုသောအခါထူးဆန်းသောအခြေအနေကိုကြုံတွေ့ရနိုင်သည်။
ဘာတွေဖြစ်နေတာလဲ? အတူတူအကြောင်းပြချက်တွေကိုလေ့လာကြည့်ရအောင်။
အောက်ပါကုဒ်ကိုကြည့်ရအောင်။
$a = [true, false];
$b = [0];
$result = array_diff($a, $b);
print_r($result);
သင်သည် မှန်ကန်သော နှင့် မှားယွင်းသောမှားယွင်းမှုများ သည် ဒေါ်လာခ ၌ မပါ 0 င ်ကြောင်း အလိုအလျောက်ထင်ကောင်းထင်လိမ့်မည်။
Array
(
[0] => 1
)
သင်အနည်းငယ်ရှုပ်ထွေးပါသလား အဘယ်ကြောင့် မှားယွင်းသော filtered ဖြစ်ပါတယ်? ပြီးတော့ ဒါက ကိန်းဂဏန်း တစ်ခု ဖြစ်လာတယ်။ ဒီပြ problem နာကိုတဖြည်းဖြည်းဖြုတ်ကြရအောင်။
ပထမ ဦး စွာကျွန်ုပ်တို့သည် array_diff ၏အခြေခံအပြုအမူကိုနားလည်ရန်လိုအပ်သည်။ တရားဝင် PHP စာရွက်စာတမ်း များ၏ညွှန်ကြားချက်များအရ -
array_diff () တန်ဖိုးများသည်တန်းတူရှိမရှိစစ်ဆေးရန် "တင်းကျပ်သောမတူသောနှိုင်းယှဉ်ချက်" (==) ကိုအသုံးပြုသည်။
ဆိုလိုသည်မှာ array_diff () သည် တန်ဖိုးများကိုနှိုင်းယှဉ်ရန် congruent ကို မသုံးပါ။ သို့သော်နှစ်ဆတန်းတူသင်္ကေတကိုအသုံးပြုသည် ။
ဆိုလိုသည်မှာအောက်ပါတန်ဖိုးများကို "တန်းတူ" ဟုသတ်မှတ်ခြင်းကိုဆိုလိုသည်။
false == 0; // true
true == 1; // true
true == "1"; // true
false == ""; // true
ကျွန်ုပ်တို့၏ဥပမာတွင် မှားယွင်းသောမှားယွင်းခြင်းကို 0 င်တန်းတူတရားစီရင်ခြင်းကိုခံရပြီးရလဒ်မှ array_diff () မှလွဲ. ဖယ်ထုတ်ထားသည်။
နောက်အသေးစိတ်အချက်မှာ Array_diff () သည် array_diff () မှပြန်လာသော array () သည်ဂဏန်းတန်ဖိုးများနှင့်ပါ 0 င်သည်။ ဥပမာအားဖြင့်:
var_dump(true); // ထုတ်လုပ်ခြင်း bool(true)
echo true; // ထုတ်လုပ်ခြင်း 1
Print_r () တွင် output တွင် output သည် boolean true သည် 1 သို့ပြောင်းလဲသွားသည်။ ဒါကြောင့်သင်ဟာရလဒ်မှာ 1 ပေါ်လာတာကိုတွေ့ရလိမ့်မယ် ။
ဒေတာအမျိုးအစားများကိုသင်နှိုင်းယှဉ်ရန်လိုအပ်ပါက (ဥပမာအားဖြင့်သင်သည် စစ်မှန်သော နှင့် 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);
ဖြစ်ရပ်မှန် များ၏ပုံမှန်အပြုအမူသည်အခြေအနေများစွာတွင်အလွန်ထိရောက်နိုင်သော်လည်း Boolean တန်ဖိုးများ, ၎င်းသည် PHP တွင်အားနည်းနေသောအမျိုးအစားများကြောင့်ဖြစ်ရတဲ့ပုံမှန်ထောင်ချောက်တစ်ခုလည်းဖြစ်သည်။
Development အမျိုးအစားများနှင့် ပတ်သက်. တင်းကျပ်သောလိုအပ်ချက်များကိုသင်၌တင်းကျပ်သောလိုအပ်ချက်များရှိပါက default array_diff () ကို အသုံးပြုခြင်း ကိုရှောင်ကြဉ်ပါ။