လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> array_diff_assoc () ကိုသုံးသောအခါအဘယ်ပြ problems နာများကမကိုက်ညီသောခင်းကျင်းမှုဆိုင်ရာအမည်အချို့ကိုဖြစ်ပေါ်စေနိုင်သနည်း။

array_diff_assoc () ကိုသုံးသောအခါအဘယ်ပြ problems နာများကမကိုက်ညီသောခင်းကျင်းမှုဆိုင်ရာအမည်အချို့ကိုဖြစ်ပေါ်စေနိုင်သနည်း။

M66 2025-05-13

array_diff_assoc () function သည် PHP တွင် 2 ခုထက်ပိုသော array များနှင့်နှိုင်းယှဉ်ရန်နှင့်ပထမခင်းကျင်းမှုတွင်တည်ရှိနေသောအချက်များပါ 0 င်သော array များပါ 0 င်သည်။ array_diff () function ကိုမတူဘဲ array_diff_assoc () သည် တစ်ချိန်တည်းတွင်ခင်းကျင်းခြင်း၏အဓိကအကြောင်းရင်းနှင့်အဓိကတန်ဖိုးများကိုနှိုင်းယှဉ်ထားသည်။ သော့အမည်နှင့်သော့ချက်တန်ဖိုးပွဲစဉ်နှစ်ခုလုံးပါကဖယ်ထုတ်ထားလိမ့်မည်။

အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်, arrays ၏အဓိကအမည်အမျိုးအစားများသည်မမျှော်လင့်သောအပြုအမူကိုဖြစ်ပေါ်စေနိုင်သည် ဤဆောင်းပါးသည်မည်သည့်အပမဲမ 0 င်သောအရေးပါသောသော့ချက်အမျိုးအစားများကိုအဘယ်ကြောင့်ပြ problems နာများဖြစ်ပေါ်စေပြီး၎င်းကိုရှောင်ရှားရန်အဖြေရှာရန်အများအားဖြင့်ဖြေရှင်းနိုင်သည်ကိုဆွေးနွေးပါမည်။

Array တွင်ရှေ့နောက်မညီအဓိကအမည်များ၏ပြ problem နာ

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 နှစ်ခု၏အဓိကတန်ဖိုးများသည်အတူတူပင်ဖြစ်သည်။

ဘာကြောင့်ပြ the နာပေါ်ပေါက်လာတာလဲ

  1. အဓိကအမည်နှိုင်းယှဉ်မှုနည်းဥပဒေများ - array_diff_assoc () array ၏တန်ဖိုးများကိုနှိုင်းယှဉ်ရုံသာမကအဓိကအကြောင်းရင်းများကိုလည်းနှိုင်းယှဉ်သည်။ PHP သည်အဓိကအမည်များကိုနှိုင်းယှဉ်ခြင်းတွင်တင်းကြပ်သည်, ထို့ကြောင့်သော့ချက်အမည်များအမျိုးအစားများသည်ခင်းကျင်းမှု၏နှိုင်းယှဉ်မှုရလဒ်များကိုသက်ရောက်လိမ့်မည်။

  2. အလိုအလျောက်အမျိုးအစားပြောင်းလဲခြင်း - PHP သည် အလိုအလျောက်အမျိုးအစားပြောင်းလဲခြင်း ကို နှိုင်းယှဉ်သောအခါအလိုအလျောက်အမျိုးအစားပြောင်းလဲခြင်း, ဥပမာအထက်ပါဥပမာတွင် array_diff_assoc () ရလဒ်သည် 1 နှင့် '1' ကိုတန်းတူဟုသတ်မှတ်ထားသည့်အတွက်ရလဒ်မှာအချည်းနှီးသောခင်းကျင်းမှုတစ်ခုဖြစ်သည်။

  3. Debug error : ဤသို့သောကိုက်ညီမှုမျိုးသည်အထူးသဖြင့်ကြီးမားသောအသုံးချမှုများတွင်ချက်ချင်းမပေါ်ပါ။ ၎င်းသည်အစီအစဉ်ကိုအချို့သောကိစ္စရပ်များတွင်မမှန်ကန်ကြောင်းရလဒ်များကိုပြန်ပို့ရန်အစီအစဉ်ကိုဖြစ်ပေါ်စေပြီးဖြေရှင်းရန်ခက်ခဲသည်။

ဒီအခြေအနေကိုဘယ်လိုရှောင်မလဲ။

  1. အဓိကအကြောင်းအမည်များကိုအတိအလင်းမပေါင်းကြောင်း - 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);
    ?>
    
  2. Array_diff_assoc () အစား array_diff ( ) ကိုသုံးပါ array ၏တန်ဖိုးကိုသာဂရုစိုက်ပါ။ Array_diff () သည် ခင်းကျင်း၏အဓိကအမည်များကိုမနှိုင်းယှဉ်သော်လည်းတန်ဖိုးမထားသောအဓိကအမည်များကြောင့်ဖြစ်ပေါ်လာသောပြ problems နာများကိုရှောင်ရှားနိုင်သည့်တန်ဖိုးများကိုသာနှိုင်းယှဉ်နိုင်သည်။

  3. အသုံးပြုမှုကိုအသုံးပြုပါ - အချို့သောကိစ္စရပ်များတွင်အဓိကအမည်များ၏ရှေ့နောက်ညီညွတ်မှုကိုသေချာစေရန်အသုံးပြုသည်။ ခင်းကျင်းမှု၏အဓိကအမည်အမျိုးအစားကို (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);
    ?>
    
  4. ခင်းကျင်းခြင်း၏အဓိကအမည်အမျိုးအစားကိုစေ့စေ့စပ်စပ်စစ်ဆေးပါ ။ array နှိုင်းယှဉ်ခြင်းမပြုမီသင် var_dump () သို့မဟုတ် gettype () ကို သုံးနိုင်သည်။

     <?php
    var_dump(array_keys($array1));
    var_dump(array_keys($array2));
    ?>
    

ဤအစီအမံများမှတဆင့်သင်မကိုမာသောသော့ချက်စာလုံးများကြောင့် array_diff_assoc () ကိုထိရောက်စွာရှောင်ရှားနိုင်သည်။