PHP တွင် Array_diff () သည် arrays များအကြားကွဲပြားခြားနားမှုများကိုရှာဖွေနိုင်သည့်အလွန်အသုံးများသောလုပ်ဆောင်မှုတစ်ခုဖြစ်သည်။ တကယ်စီမံကိန်းများ၌အပေါင်းအသင်းဆိုင်ရာခင်းကျင်းမှုတစ်ခုနှင့်ကိုင်တွယ်ရန်၎င်းကိုကျွန်ုပ်တို့အသုံးပြုသောအခါ၎င်းသည်မည်သို့အလုပ်လုပ်သည်ကိုနားမလည်ပါက "တွင်း" များသို့ကျလိမ့်မည်။
ဤ ဆောင်းပါးသည်နက်နဲသောအရာ,
$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' သည်ကွဲပြားခြားနားသောတန်ဖိုးများကြောင့်ကွဲပြားခြားနားမှုများထဲမှတစ်ခုဖြစ်သည်။
အမှားအယွင်းများ - 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);
၎င်းသည်သော့နှင့်တန်ဖိုးများကိုတစ်ချိန်တည်းတွင်နှိုင်းယှဉ်ခြင်း, ဤ "ထင်ယောင်ထင်မှား" ကိုရှောင်ရှားလိမ့်မည်။
$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);
});
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);
ဒေတာဘေ့စ်မှဒေတာများကိုဆွဲယူပါကအသုံးပြုသူသည် $ မူရင်း သို့အသုံးပြုသူသည် $ new_data သို့တင်ပြသည်။ မည်သည့်နယ်ပယ်ပြောင်းလဲသွားသည်ကိုသင်သိလိုသည်။
$original = ['name' => 'Alice', 'email' => 'a@m66.net'];
$new_data = ['name' => 'Alice', 'email' => 'alice@m66.net'];
$changed = array_diff_assoc($new_data, $original);
ဤနည်းအားဖြင့်အသုံးပြုသူမှမည်သည့်နယ်ပယ်ကိုပြောင်းလဲခြင်းကိုတိကျစွာရရှိနိုင်သည်။
သင့်တွင် 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 များကိုလက်ဖြင့်ရေးပါ။