PHP ပရိုဂရမ်တွင် array_diff_assoc () function ကိုအသုံးပြုသည်။ array နှစ်ခုထက်ပိုသော in ရာမစ်နှင့်နှိုင်းယှဉ်ရန်, ၎င်းသည် Array ပမာဏကိုနှိုင်းယှဉ်ခြင်းအားဖြင့်အလုပ်လုပ်သည်။ သို့သော် developer များစွာသည် array_diff_assoc () ကို အသုံးပြုသည့်အခါအထူးသဖြင့်ကြိုးနှင့်ဂဏန်းအမျိုးအစားများကိုကိုင်တွယ်သောအခါပြ problems နာအချို့ကိုကြုံတွေ့ရသည်။ ဤဆောင်းပါးသည်ဤအပင်များနားလည်မှုလွဲမှားခြင်းများနှင့်သူတို့၏အကြောင်းပြချက်များကိုစူးစမ်းလေ့လာပါမည်။
ပြ the နာကိုအသေးစိတ်မဆွေးနွေးမီ Array_diff_assoc () function ကို အခြေခံ. သုံးသပ်ကြည့်ကြစို့။
<?php
$array1 = ['a' => 'apple', 'b' => 10, 'c' => 15];
$array2 = ['a' => 'apple', 'b' => '10', 'c' => 20];
$result = array_diff_assoc($array1, $array2);
print_r($result);
?>
output ရလဒ် -
Array
(
[b] => 10
[c] => 15
)
အထက်ဖော်ပြပါဥပမာတွင် array - b ၏အဓိကတန်ဖိုးသည် string သည် '10 ' သည် '10' နှင့် 'B' key value's 'array1 ၏အဓိကတန်ဖိုးသည် integer 10 ,
ဤပြ problem နာသည် PHP တွင်သွယ်ဝိုက်အမျိုးအစားပြောင်းလဲခြင်းဖြင့်ဖြစ်ပေါ်သည်။ ကွဲပြားခြားနားသောဒေတာအမျိုးအစားများကိုနှိုင်းယှဉ်ရန်သင်ကြိုးစားသည့်အခါ PHP သည်၎င်းကိုတူညီသောအမျိုးအစားသို့အလိုအလျောက်ပြောင်းလဲလိမ့်မည်။ ဥပမာအားဖြင့်, array_diff_assoc () နှိုင်းယှဉ်ကြည့်ရှုသည့်အခါ array ရှိ key-value pair တစုံပါ 0 င်ပါက string type အမျိုးအစားနှင့်ဂဏန်းအမျိုးအစားများပါ 0 င်ပါက PHP သည်၎င်းတို့အားကွဲပြားသောအမျိုးအစားများအဖြစ်ယူမှတ်လိမ့်မည်။
ဥပမာအားဖြင့်:
<?php
$array1 = [0 => '10'];
$array2 = [0 => 10];
$result = array_diff_assoc($array1, $array2);
print_r($result);
?>
ဤကုဒ်ရလဒ်များ:
Array
(
[0] => 10
)
Array_diff_assoc () သည် သော့ချက်များနှင့်တန်ဖိုးများကိုနှိုင်းယှဉ်ရန်အသုံးပြုသော်လည်းနှစ် ဦး စလုံးသည် array တွင်တူညီသော "10" အတူတူပင်ဖြစ်သည်။
PHP တွင်သွယ်ဝိုက်သောအမျိုးအစားပြောင်းလဲခြင်းသည်မတိကျသောရလဒ်များကိုပြန်လည်ရောက်ရှိရန် array_diff_assoc () function ကိုဖြစ်ပေါ်စေနိုင်သည်။ ဥပမာအားဖြင့်, သင်သည် string တစ်ခုနှင့်နှိုင်းယှဉ်ပါကနံပါတ်တစ် PHP သည်နံပါတ်ကိုနံပါတ်တစ်ခုသို့ပြောင်းလဲခြင်းသို့မဟုတ်ပုံမှန်အားဖြင့်နံပါတ်သို့ပြောင်းခြင်းသို့မဟုတ် string သို့ပြောင်းလဲလိမ့်မည်။
ဥပမာအားဖြင့်, အောက်ပါကုဒ်သည်အမှားတစ်ခုနှင့်ကြုံတွေ့ရလိမ့်မည်။
<?php
$array1 = ['a' => '123'];
$array2 = ['a' => 123];
$result = array_diff_assoc($array1, $array2);
print_r($result);
?>
ထုတ်လုပ်မှု -
Array
(
[a] => 123
)
array_diff_assoc () က '123' နှင့် 123 သည်ကွဲပြားခြားနားပြီး 123 ကွဲပြားကြောင်းယုံကြည်သည်။
ကိုက်ညီမှုမရှိသောအမှားများကိုနှိုင်းယှဉ်ခြင်းအမှားများကိုရှောင်ရှားရန် array_diff_assoc () ကိုအသုံးပြုသည့်အခါခင်းကျင်းအတွင်းရှိတန်ဖိုးအမျိုးအစားများကိုသေချာစေရန်သေချာစေရန်အကြံပြုပါသည်။ ကွဲပြားခြားနားသောတန်ဖိုးအမျိုးအစားများကိုနှိုင်းယှဉ်ရန်လိုအပ်ပါကအမျိုးအစားပြောင်းလဲခြင်းကိုအတိအလင်းလုပ်ဆောင်ရန်စဉ်းစားနိုင်သည်။
နှိုင်းယှဉ်ခြင်းမပြုမီတန်ဖိုးများအားလုံးသည် string တစ်ခုသို့မဟုတ်နံပါတ်သို့ဥပမာအမျိုးအစားနှင့်တူညီသောအမျိုးအစားသို့ကူးပြောင်းနိုင်သည်။
<?php
$array1 = ['a' => (string) 123];
$array2 = ['a' => '123'];
$result = array_diff_assoc($array1, $array2);
print_r($result);
?>
ဤကုဒ်သည်နှစ် ဦး စလုံးသည်တူညီသောအမျိုးအစား (string) နှင့်အတူတူပင်ဖြစ်သည်, ထို့ကြောင့်မလိုအပ်သောအမှားများကိုရှောင်ရှားရန်သေချာသည်။
အကယ် . သင်ဟာစံနှုန်းအားလုံးကိုခင်းကျင်းဖို့လိုလျှင်,
<?php
$array1 = ['a' => 123, 'b' => 456];
$array2 = ['a' => '123', 'b' => '456'];
$array1 = array_map('strval', $array1); // တန်ဖိုးများအားလုံးကိုကြိုးများသို့ပြောင်းပါ
$array2 = array_map('strval', $array2);
$result = array_diff_assoc($array1, $array2);
print_r($result);
?>
ဤအချက်သည် Array နှစ်ခုစလုံးမှတန်ဖိုးများသည် array_diff_assoc () နှိုင်းယှဉ်ချက်တွင်တသမတ်တည်းရှိနေဆဲဖြစ်သည်။
PHP တွင်သွယ်ဝိုက်သောအမျိုးအစားပြောင်းလဲခြင်းကြောင့် array_diff_ adiff_soc () function ကိုအသုံးပြုသောအခါ string နှင့်နံပါတ်အမျိုးအစားများကိုမကြာခဏမှားလေ့ရှိသည်။ developer တစ် ဦး သည်ခင်းကျင်းနှိုင်းယှဉ်မှုများပြုလုပ်သောအခါနှိုင်းယှဉ်ခြင်းတွင်ပါ 0 င်သောတန်ဖိုးအမျိုးအစားများကိုတသမတ်တည်းဖြစ်ကြောင်းသေချာစေရန်အကောင်းဆုံးဖြစ်သည်။ ရှင်းလင်းပြတ်သားစွာပြောင်းလဲခြင်း (သို့ ) array_map () ကဲ့သို့သောအထောက်အကူပြုလုပ်ငန်းများအသုံးပြုခြင်းသည်အမျိုးအစားမကိုက်ညီသောပြ problems နာများကိုရှောင်ရှားနိုင်ပြီးနှိုင်းယှဉ်မှုများပိုမိုတိကျသည်။