array_diff_assoc () function သည် PHP တွင် 2 ခုထက်ပိုသော array များနှင့်နှိုင်းယှဉ်ရန်နှင့်ပထမခင်းကျင်းမှုတွင်တည်ရှိနေသောအချက်များပါ 0 င်သော array များပါ 0 င်သည်။ array_diff () function ကိုမတူဘဲ array_diff_assoc () သည် တစ်ချိန်တည်းတွင်ခင်းကျင်းခြင်း၏အဓိကအကြောင်းရင်းနှင့်အဓိကတန်ဖိုးများကိုနှိုင်းယှဉ်ထားသည်။ သော့အမည်နှင့်သော့ချက်တန်ဖိုးပွဲစဉ်နှစ်ခုလုံးပါကဖယ်ထုတ်ထားလိမ့်မည်။
အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်, arrays ၏အဓိကအမည်အမျိုးအစားများသည်မမျှော်လင့်သောအပြုအမူကိုဖြစ်ပေါ်စေနိုင်သည် ။ ဤဆောင်းပါးသည်မည်သည့်အပမဲမ 0 င်သောအရေးပါသောသော့ချက်အမျိုးအစားများကိုအဘယ်ကြောင့်ပြ problems နာများဖြစ်ပေါ်စေပြီး၎င်းကိုရှောင်ရှားရန်အဖြေရှာရန်အများအားဖြင့်ဖြေရှင်းနိုင်သည်ကိုဆွေးနွေးပါမည်။
PHP သည်စာလုံးပေါင်းဖြင့်စကားလုံးများအားနည်းသောဘာသာစကားဖြစ်သည်။ ဆိုလိုသည်မှာ၎င်းသည်အမျိုးအစားကိုအလိုအလျောက်ပြောင်းလဲလိမ့်မည်။ ဥပမာအားဖြင့်, သော့ချက်အမည် 1 (integer) နှင့် '1' (string) နှင့် '1' (string) နှင့်နှိုင်းယှဉ်လျှင်တူညီကြသည်။ ဤအလိုအလျောက်ပြောင်းလဲခြင်းသည် array_diff_assoc () ကို သုံးသောအခါအမှားတစ်ခုဖြစ်ပေါ်စေသည့်အလိုအလျှောက် array key name အမျိုးအစားများကိုဖြစ်ပေါ်စေနိုင်သည်။
အောက်ပါကုဒ်ကိုသုံးသပ်ကြည့်ပါ။
<?php
$array1 = array(1 => 'apple', '1' => 'orange');
$array2 = array(1 => 'banana', '1' => 'orange');
$result = array_diff_assoc($array1, $array2);
print_r($result);
?>
ဤဥပမာတွင် ဒေါ်လာ array1 နှင့် $ array2 နှစ်ခုလုံးတွင်သော့အမည်များ 1 နှင့် '1' ပါရှိသည်။ PHP သည် '1' ကိုအလိုအလျောက်ပြောင်းလဲသွားလိမ့်မည်ကတည်းကဤသော့နှစ်ခုကိုအတူတူပင်ဟုသတ်မှတ်ထားသည် ။ ထို့ကြောင့် array_diff_assoc () ဤ array နှစ်ခု၏အဓိကတန်ဖိုးများသည်အတူတူပင်ဖြစ်သည်။
အဓိကအမည်နှိုင်းယှဉ်မှုနည်းဥပဒေများ - array_diff_assoc () array ၏တန်ဖိုးများကိုနှိုင်းယှဉ်ရုံသာမကအဓိကအကြောင်းရင်းများကိုလည်းနှိုင်းယှဉ်သည်။ PHP သည်အဓိကအမည်များကိုနှိုင်းယှဉ်ခြင်းတွင်တင်းကြပ်သည်, ထို့ကြောင့်သော့ချက်အမည်များအမျိုးအစားများသည်ခင်းကျင်းမှု၏နှိုင်းယှဉ်မှုရလဒ်များကိုသက်ရောက်လိမ့်မည်။
အလိုအလျောက်အမျိုးအစားပြောင်းလဲခြင်း - PHP သည် အလိုအလျောက်အမျိုးအစားပြောင်းလဲခြင်း ကို နှိုင်းယှဉ်သောအခါအလိုအလျောက်အမျိုးအစားပြောင်းလဲခြင်း, ဥပမာအထက်ပါဥပမာတွင် array_diff_assoc () ရလဒ်သည် 1 နှင့် '1' ကိုတန်းတူဟုသတ်မှတ်ထားသည့်အတွက်ရလဒ်မှာအချည်းနှီးသောခင်းကျင်းမှုတစ်ခုဖြစ်သည်။
Debug error : ဤသို့သောကိုက်ညီမှုမျိုးသည်အထူးသဖြင့်ကြီးမားသောအသုံးချမှုများတွင်ချက်ချင်းမပေါ်ပါ။ ၎င်းသည်အစီအစဉ်ကိုအချို့သောကိစ္စရပ်များတွင်မမှန်ကန်ကြောင်းရလဒ်များကိုပြန်ပို့ရန်အစီအစဉ်ကိုဖြစ်ပေါ်စေပြီးဖြေရှင်းရန်ခက်ခဲသည်။
အဓိကအကြောင်းအမည်များကိုအတိအလင်းမပေါင်းကြောင်း - array_diff_assoc () မသုံးမီခင်းကျင်းမှု၏အဓိကအမည်အမျိုးအစားများကိုသေချာအောင်လုပ်ပါ။ အဓိကအမည်များအားလုံးကို intval () သို့မဟုတ် strval () လုပ်ဆောင်ချက်များကို အသုံးပြု. တူညီသောအမျိုးအစားသို့ပြောင်းလဲနိုင်သည်။
ဥပမာအားဖြင့်, သော့ချက်အမည်များအားလုံးကို strings သို့ပြောင်းပါ။
<?php
$array1 = array('1' => 'apple', 1 => 'orange');
$array2 = array(1 => 'banana', '1' => 'orange');
// သော့ချက်အမည်များအားလုံးကိုကြိုးများသို့ပြောင်းပါ
$array1 = array_map(function($key) { return strval($key); }, array_keys($array1));
$array2 = array_map(function($key) { return strval($key); }, array_keys($array2));
$result = array_diff_assoc($array1, $array2);
print_r($result);
?>
Array_diff_assoc () အစား array_diff ( ) ကိုသုံးပါ ။ array ၏တန်ဖိုးကိုသာဂရုစိုက်ပါ။ Array_diff () သည် ခင်းကျင်း၏အဓိကအမည်များကိုမနှိုင်းယှဉ်သော်လည်းတန်ဖိုးမထားသောအဓိကအမည်များကြောင့်ဖြစ်ပေါ်လာသောပြ problems နာများကိုရှောင်ရှားနိုင်သည့်တန်ဖိုးများကိုသာနှိုင်းယှဉ်နိုင်သည်။
အသုံးပြုမှုကိုအသုံးပြုပါ - အချို့သောကိစ္စရပ်များတွင်အဓိကအမည်များ၏ရှေ့နောက်ညီညွတ်မှုကိုသေချာစေရန်အသုံးပြုသည်။ ခင်းကျင်းမှု၏အဓိကအမည်အမျိုးအစားကို (int) သို့မဟုတ် (string) ကိုအသုံးပြုခြင်းကိုအတိအလင်းပြောင်းလဲနိုင်သည်။
<?php
$array1 = array(1 => 'apple', '1' => 'orange');
$array2 = array(1 => 'banana', '1' => 'orange');
// Cast key name သည်ကိန်းတစ်ခုဖြစ်သည်
$array1 = array_map(function($key) { return (int) $key; }, array_keys($array1));
$array2 = array_map(function($key) { return (int) $key; }, array_keys($array2));
$result = array_diff_assoc($array1, $array2);
print_r($result);
?>
ခင်းကျင်းခြင်း၏အဓိကအမည်အမျိုးအစားကိုစေ့စေ့စပ်စပ်စစ်ဆေးပါ ။ array နှိုင်းယှဉ်ခြင်းမပြုမီသင် var_dump () သို့မဟုတ် gettype () ကို သုံးနိုင်သည်။
<?php
var_dump(array_keys($array1));
var_dump(array_keys($array2));
?>
ဤအစီအမံများမှတဆင့်သင်မကိုမာသောသော့ချက်စာလုံးများကြောင့် array_diff_assoc () ကိုထိရောက်စွာရှောင်ရှားနိုင်သည်။