လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> array_diff ကိုသုံးတဲ့အခါမှတ်စုများ ()

array_diff ကိုသုံးတဲ့အခါမှတ်စုများ ()

M66 2025-06-06

PHP တွင် Array_diff () သည် arrays များအကြားကွဲပြားခြားနားမှုများကိုရှာဖွေနိုင်သည့်အလွန်အသုံးများသောလုပ်ဆောင်မှုတစ်ခုဖြစ်သည်။ တကယ်စီမံကိန်းများ၌အပေါင်းအသင်းဆိုင်ရာခင်းကျင်းမှုတစ်ခုနှင့်ကိုင်တွယ်ရန်၎င်းကိုကျွန်ုပ်တို့အသုံးပြုသောအခါ၎င်းသည်မည်သို့အလုပ်လုပ်သည်ကိုနားမလည်ပါက "တွင်း" များသို့ကျလိမ့်မည်။

ဆောင်းပါးသည်နက်နဲသောအရာ,

1 ။ array_diff ၏အခြေခံအသုံးပြုမှု ()

 $array1 = ['a' => 'apple', 'b' => 'banana', 'c' => 'cherry'];
$array2 = ['a' => 'apple', 'b' => 'blueberry'];

$result = array_diff($array1, $array2);
print_r($result);

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

 Array
(
    [b] => banana
    [c] => cherry
)

ရှင်းလင်းချက် - array_diff () သည် တန်ဖိုးကိုသာနှိုင်းယှဉ်ပြီး သော့အမည်ကိုလျစ်လျူရှုထားသည် ။ ဤဥပမာတွင် ဒေါ်လာ array1 ၏သော့များသည်ဒေါ်လာ ('Banana' = 'Banana' = 'BLENBERBER' = 'blueberry' သည်ကွဲပြားခြားနားသောတန်ဖိုးများကြောင့်ကွဲပြားခြားနားမှုများထဲမှတစ်ခုဖြစ်သည်။

2 ။ ဘုံနားလည်မှုလွဲမှားခြင်းနှင့်ထောင်ချောက်

1 ။ သော့အမည်များနှိုင်းယှဉ်မှုကိုလျစ်လျူရှုပါ

အမှားအယွင်းများ - developer များစွာသည် array_diff () သည် key-value အတွဲများကိုနှိုင်းယှဉ်လိမ့်မည်။

 $a = ['id' => 1, 'name' => 'John'];
$b = ['name' => 'John', 'id' => 2];

var_dump(array_diff($a, $b));

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

 array(1) {
  ["id"]=>
  int(1)
}

'NAME' = >> 'John' သည် array နှစ်ခုလုံးတွင်အတူတူပင်ဖြစ်သော်လည်း Array_diff () သည် သော့ကိုမကြည့်ပါ။ ဒီတော့ 'ID' => 1 ကို ကွဲပြား ခြားနားသည်ဟုယူဆရသည်

? ဖြေရှင်းချက် - ကီးနှင့်တန်ဖိုးများကိုတစ်ချိန်တည်းနှိုင်းယှဉ်ချင်လျှင် array_diff_assoc ကို သုံးရန်အကြံပြုသည်။

 array_diff_assoc($a, $b);

၎င်းသည်သော့နှင့်တန်ဖိုးများကိုတစ်ချိန်တည်းတွင်နှိုင်းယှဉ်ခြင်း, ဤ "ထင်ယောင်ထင်မှား" ကိုရှောင်ရှားလိမ့်မည်။

2 ။ အချက်အလက်အမျိုးအစားများနှိုင်းယှဉ်မှုကိုလျစ်လျူရှုပါ

 $a = ['value1' => 123];
$b = ['value2' => '123'];

print_r(array_diff($a, $b));

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

 Array
(
)

Pit Point: array_diff () သည်မှန်ကန်သောသို့မဟုတ်အမှားအယွင်းများကိုတင်းကြပ်စွာနှိုင်းယှဉ်ခြင်း ( == ), ဒါကြောင့် 123 နှင့် '123' ကိုအတူတူပင်စဉ်းစားသည်။

? သိကောင်းစရာ - သင်တင်းကျပ်သောနှိုင်းယှဉ်မှုလိုအပ်ပါက (တန်ဖိုးများနှင့်အမျိုးအစားများသည်တသမတ်တည်းရှိရမည်) သင် array_diff () ၏ variant array_diff_diff_Uassoc () ကို သုံးနိုင်သည်။

 $result = array_udiff($a, $b, function($a, $b) {
    return $a === $b ? 0 : ($a > $b ? 1 : -1);
});

3 ။ multidimensional array နှင့်ဆက်ဆံရာတွင်ကိုင်တွယ်သည့်အခါမျှော်လင့်ချက်များ

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

 $a = ['info' => ['id' => 1, 'name' => 'Tom']];
$b = ['info' => ['id' => 1, 'name' => 'Tom']];

print_r(array_diff($a, $b));

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

 Array
(
    [info] => Array
        (
            [id] => 1
            [name] => Tom
        )
)

အကြောင်းရင်း - array type ၏တန်ဖိုးကို array_diff () တွင် string တစ်ခုအဖြစ်ကုသသည်။ arrays နှစ်ခုပါ 0 င်သည့်အကြောင်းအရာများသည်တန်းတူမဟုတ်ဘဲတိုက်ရိုက်မနှိုင်းယှဉ်နိုင်ပါ။

? ဖြေရှင်းချက် - ရှုထောင့်အမျိုးမျိုးကိုနှိုင်းယှဉ်ချင်ရင်, သင် recursive function တွေကိုကိုယ်တိုင်ရေးဖို့လိုတယ်,

 $a_serialized = array_map('serialize', $a);
$b_serialized = array_map('serialize', $b);

$diff = array_diff($a_serialized, $b_serialized);

3 ။ လက်တွေ့ကျွမ်းကျင်မှုနှင့်လျှောက်လွှာအခြေအနေများ

ဇာတ်လမ်း 1 - ဒေတာဘေ့စ်ဒေတာကိုပြုပြင်မွမ်းမံခြင်းရှိမရှိဆုံးဖြတ်ရန်

ဒေတာဘေ့စ်မှဒေတာများကိုဆွဲယူပါကအသုံးပြုသူသည် $ မူရင်း သို့အသုံးပြုသူသည် $ new_data သို့တင်ပြသည်။ မည်သည့်နယ်ပယ်ပြောင်းလဲသွားသည်ကိုသင်သိလိုသည်။

 $original = ['name' => 'Alice', 'email' => 'a@m66.net'];
$new_data = ['name' => 'Alice', 'email' => 'alice@m66.net'];

$changed = array_diff_assoc($new_data, $original);

ဤနည်းအားဖြင့်အသုံးပြုသူမှမည်သည့်နယ်ပယ်ကိုပြောင်းလဲခြင်းကိုတိကျစွာရရှိနိုင်သည်။

ဇာတ်လမ်း 2 - configuration files နှစ်ခုအကြားကွဲပြားခြားနားမှုများကိုနှိုင်းယှဉ်ခြင်း

သင့်တွင် configure array နှစ်ခုနှင့် $ config2 နှင့် $ config2 ရှိသည်:

 $config1 = include 'http://m66.net/config/old.php';
$config2 = include 'http://m66.net/config/new.php';

$diff = array_diff_assoc($config2, $config1);

၎င်းသည် configuration ပြောင်းလဲမှုများကိုလွယ်ကူစွာဝင်ရောက်ခွင့်ပြုထားသည်, အထူးသဖြင့်အလိုအလျောက် script များဖြင့်ရေးသားရန်သင့်တော်သည်။

အကျဉ်းချုပ်

နည်းလမ်း အကြောင်းအရာကိုနှိုင်းယှဉ် အမျိုးအစားများအကြားခွဲခြားရန်ရှိမရှိ မြင်ကွင်းများအတွက်သင့်တော်သည်
array_diff () တန်ဖိုးများကိုသာနှိုင်းယှဉ် မဟုတ် ရိုးရှင်းသောတန်ဖိုးနှိုင်းယှဉ်
array_diff_assoc () နှိုင်းယှဉ်တန်ဖိုး + key အမည် မဟုတ် ပုံစံ, configuration နှိုင်းယှဉ်
array_udiff () စိတ်ကြိုက်နှိုင်းယှဉ်နည်းလမ်း စိမှန်ပြုနိုင်သော တိကျစွာအမျိုးအစားနှိုင်းယှဉ်
Serialize array_diff () MultidimenDimenDimensal array နှိုင်းယှဉ် မဟုတ်ပါ (အရွယ်အစား) Multidimensional ဖွဲ့စည်းပုံနှိုင်းယှဉ်

array_diff () ကို အသုံးပြုတဲ့အခါ, သင်နှိုင်းယှဉ်နေသည့်အရာနှင့် ပတ်သက်. ရှင်းလင်းပါ။ အဓိကအမည်များဖြင့်လမ်းလွဲမသွားပါနှင့်, အမျိုးအစား၏သက်ရောက်မှုကိုမမေ့ပါနှင့်။ ဤမူများကိုနားလည်နိုင်ခြင်းဖြင့်သာဤ tool function ကိုသင်အမှန်တကယ်အသုံးပြုနိုင်သည်။

အကယ်. သင်၏စီမံကိန်းတွင်အထူးနှိုင်းယှဉ်ခြင်းလိုအပ်ချက်များကိုသင်ကြုံတွေ့ရပါက ကျေးဇူးပြု. gadget function encapsulationsulationulation များကိုလက်ဖြင့်ရေးပါ။