လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP ၏ Array_diff () function သည်ကျွန်ုပ်မျှော်လင့်ထားသည့်ရလဒ်ကိုအဘယ်ကြောင့်မပြန်ပါသနည်း။ အသုံးများသောအမှားများနှင့်အကြံပြုချက်များကို debugging

PHP ၏ Array_diff () function သည်ကျွန်ုပ်မျှော်လင့်ထားသည့်ရလဒ်ကိုအဘယ်ကြောင့်မပြန်ပါသနည်း။ အသုံးများသောအမှားများနှင့်အကြံပြုချက်များကို debugging

M66 2025-05-14

array_diff () PHP တွင်အလွန်လက်တွေ့ကျတဲ့ array function တစ်ခုဖြစ်သည်။ ၎င်း၏ function သည်တန်ဖိုးများကိုပထမခင်းကျင်းမှုတွင်ထည့်သွင်းထားသော်လည်းအခြားခင်းကျင်းမှုတွင်မပါ 0 င်ပါ။ ၎င်း၏ syntax သည်ရိုးရှင်းသည်ဟုထင်ရသော်လည်းအမှန်တကယ်အသုံးပြုသောအခါ၎င်းသည်အမှန်တကယ်အသုံးပြုသောအခါမကြာခဏပေါ်လာလေ့ရှိသည်။ ဤဆောင်းပါးသည်သင် array_diff () ကို ပိုမိုထိရောက်စွာအသုံးပြုရန်ကူညီရန်ဘုံအမှားအယွင်းများနှင့် debugging နည်းစနစ်များကိုအကျဉ်းချုပ်ဖော်ပြလိမ့်မည်။

1 ။ အခြေခံအသုံးပြုမှုကိုပြန်လည်သုံးသပ်

 $array1 = ["apple", "banana", "cherry"];
$array2 = ["banana", "cherry"];
$result = array_diff($array1, $array2);
print_r($result);

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

 Array
(
    [0] => apple
)

သင်မြင်နိုင်သည်နှင့်အမျှ array_diff () သည်တန်ဖိုးများကိုအဓိကအမည်မည်သို့ပင်ရှိပါစေ, ဒေါ်လာ array1 တွင်မပါ 0 င်ပါ။

2 ။ ဘုံအမှားအယွင်းများနှင့်ထောင်ချောက်များ

1 ။ ကိုက်ညီမှုမရှိသောဒေတာအမျိုးအစားများသည်ကျရှုံးမှုနှင့်ကိုက်ညီသည်

 $array1 = [1, 2, 3];
$array2 = ["2", "3"];
$result = array_diff($array1, $array2);
print_r($result);

မျှော်လင့်ထားသည့်ရလဒ် -

 Array
(
    [0] => 1
)

အမှန်တကယ် output ကို:

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

ဘာကြောင့်လဲဆိုတော့ array_diff () ဟာ မတူကွဲပြားတဲ့နှိုင်းယှဉ်ချက်တွေ ( === အစား == ) ကိုအသုံးပြုလို့ပဲ။ အချို့ဖြစ်ရပ်များတွင်ကြိုးကြိုးများနှင့်နံပါတ်များသည်တစ် ဦး နှင့်တစ် ဦး အောင်မြင်စွာပြောင်းလဲခြင်းမပြုပါ။

ဖြေရှင်းချက် - "တင်းကျပ်စွာနှိုင်းယှဉ်ခြင်း" ကိုအောင်မြင်ရန်စိတ်ကြိုက်နှိုင်းယှဉ်မှု function ကိုသင် array_udiff () ကိုသုံးနိုင်သည်။

 function strict_compare($a, $b) {
    return ($a === $b) ? 0 : 1;
}

$result = array_udiff($array1, $array2, 'strict_compare');
print_r($result);

2 ။ Array တွင်ထပ်တူတန်ဖိုးများရှိသည့်အခါနားလည်မှုလွဲခြင်း

 $array1 = ["apple", "banana", "apple"];
$array2 = ["banana"];
$result = array_diff($array1, $array2);
print_r($result);

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

 Array
(
    [0] => apple
    [2] => apple
)

မှတ်စု: array_diff () သည် မအောင်မြင်ပါ, ၎င်းသည်မလှုပ်မရှားသောတန်ဖိုးများနှင့်မူရင်းခင်းကျင်းမှုတွင်၎င်းတို့၏မူလသော့ချက်များအားလုံးကိုဆက်လက်ထိန်းသိမ်းထားလိမ့်မည်။

3 ။ Associative Array ၏အဓိကအကြောင်းရင်း၏အကျိုးသက်ရောက်မှု

 $array1 = ["a" => "apple", "b" => "banana"];
$array2 = ["banana"];
$result = array_diff($array1, $array2);
print_r($result);

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

 Array
(
    [a] => apple
)

Array သည် Associative Array ဖြစ်သော်လည်း array_diff () သည် တန်ဖိုးများကိုနှိုင်းယှဉ်ခြင်းနှင့်သော့များကိုနှိုင်းယှဉ်ခြင်းမရှိပါ။ ရလဒ်ကိုရလဒ်အနေဖြင့်သာကာကွယ်ထားသည်။

3 ။ ကျွမ်းကျင်မှုနှင့်အကြံပြုချက်များ debugging

  1. intermediate variable တွေကိုပုံနှိပ်ပါ

     var_dump($array1, $array2);
    

    သင်ဖြတ်သန်းသွားသော array နှစ်ခုသည်မမျှော်လင့်သောကြိုး / အရေအတွက်ရောနှောခြင်း, နေရာများသို့မဟုတ်ပုံစံချခြင်းကိစ္စများဖြစ်သည်။

  2. JSONS_CENDODEDED ကို အသုံးပြု. ဒေတာဖွဲ့စည်းပုံကိုစစ်ဆေးပါ။

     echo json_encode($array1);
    

    တန်ဖိုးအမျိုးအစား (သို့) သွယ်ဝိုက်ဇာတ်ကောင်များ (ဥပမာ - နေရာများ, လိုင်းချိုးခြင်းစသည်တို့) ရှိ,

  3. function ကို debugging ကြိုးစားပါ အကယ်. သင် array_udiff () ကို သုံးပါက, တန်ဖိုးများကိုနှိုင်းယှဉ်ခြင်း function ကိုနှိုင်းယှဉ်ကြည့်ရှုရန်မှတ်တမ်းများသို့မဟုတ် debug ထုတ်ပြန်ချက်များကိုထည့်ရန်မမေ့ပါနှင့်။

4 ။ အစစ်အမှန်အမှု - URL စစ်ထုတ်ခြင်းပြ problem နာ

မြင်ကွင်း -

 $urls = [
    "https://m66.net/page1",
    "https://m66.net/page2",
    "https://m66.net/page3"
];

$visited = [
    "https://m66.net/page2",
    "https://m66.net/page3"
];

$unvisited = array_diff($urls, $visited);
print_r($unvisited);

အကယ်. URL တစ်ခုသည်တစ် ဦး နှင့် တူသောနေရာတစ်ခုသို့မဟုတ်ကွဲပြားခြားနားသောကွဲပြားမှုရှိလျှင်၎င်းသည်မှန်ကန်စွာနှိုင်းယှဉ်နိုင်ခြင်းမရှိသေးပါ။

ဒေတာများကိုသန့်ရှင်းရေးလုပ်ရန်နှင့်၎င်းကိုနှိုင်းယှဉ်ရန်အကြံပြုသည်။

 $urls = array_map('trim', $urls);
$visited = array_map('trim', $visited);
$unvisited = array_diff($urls, $visited);

V. နိဂုံးချုပ်

Array_diff () သည်အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည်။ ၎င်း၏အခြေခံအပြုအမူကိုနားလည်ခြင်းနှင့်သင့်တော်သော debugging ကျွမ်းကျင်မှုများကိုပေါင်းစပ်ခြင်းအားဖြင့်သာ၎င်းကိုကျွန်ုပ်တို့အမှန်တကယ်အသုံးပြုနိုင်သည်။

ဤဆောင်းပါးသည်သင့်အားအဘယ်ကြောင့်မှားသနည်းဟူသောပြ problem နာကို ဖြေရှင်း . ဖြေရှင်းနိုင်ရန်ကူညီနိုင်လိမ့်မည်ဟုကျွန်ုပ်မျှော်လင့်ပါသည်။ အကယ် . သင်သည်ပိုမိုရှုပ်ထွေးသောအခြေအနေများသို့မဟုတ်နှိုင်းယှဉ်မှုများပိုမိုများပြားသည်ကိုသင်ကြုံတွေ့ရပါက,