PHP တွင် Array_intersect_UAssoc () သည်အစွမ်းထက်သော်လည်းနားလည်မှုလွဲခြင်း function ဖြစ်သည်။ ၎င်းသည်ခင်းကျင်းမှုအမျိုးမျိုး၏သော့နှင့်တန်ဖိုးများကိုနှိုင်းယှဉ်ကြည့်ရှုရန်နှင့်သော့ချက်များကိုပြန်ပို့ရန်အတွက်သော့သတ်မှတ်ထားသည့်လုပ်ဆောင်ချက်များမှတဆင့်သော့များကိုနှိုင်းယှဉ်နိုင်သည်။ သို့သော်၎င်းသည်တိကျစွာသော့ချက်များကိုစိတ်ကြိုက်ပြုလုပ်နိုင်သောကြောင့်ဖြစ်နိုင်ချေရှိသောပြ problem နာတစ်ခုပေါ်ပေါက်စေနိုင်သည်။
array_intersect_UASESOC ၏အခြေခံအသုံးပြုမှုကိုလျင်မြန်စွာပြန်လည်သုံးသပ်ကြပါစို့။
$result = array_intersect_uassoc(
['1' => 'apple', 2 => 'banana', 3 => 'cherry'],
[1 => 'apple', '2' => 'banana', 3 => 'berry'],
function ($a, $b) {
return strcmp((string)$a, (string)$b);
}
);
print_r($result);
ဤဥပမာတွင်ကျွန်ုပ်တို့သည် strcmp () ကို အသုံးပြုသည်။ သော့များကိုနှိုင်းယှဉ်ရန်ကျွန်ုပ်တို့သည်သော့များကိုကြိုးကြိုးများသို့အတိအလင်းပြောင်းရန်သတိပြုပါ။ ၎င်းသည်မတူညီသောအမျိုးအစားများကြောင့်ဖြစ်ပေါ်လာသောမအောင်မြင်မှုများကိုရှောင်ရှားရန်ဖြစ်သည်။
PHP ၏ Array ခလုတ်များသည်ကိန်းဂဏန်းများသို့မဟုတ်ကြိုးများဖြစ်နိုင်သည်။ PHP သည်၎င်းတို့အားအချို့သောအခြေအနေများတွင်အလိုအလျောက်ပြောင်းလဲနိုင်သည်။ ဥပမာအားဖြင့်, '1' သည် အလိုအလျောက်ပြောင်းလဲလိမ့်မည်။ ဤအလိုအလျောက်ပြောင်းလဲခြင်း သည် ကိစ္စရပ်အများစုတွင်ပြ problems နာများဖြစ်ပေါ်စေသည်,
'1' နှင့် 1 ကို ပုံမှန်ခင်းကျင်းမှုတွင်တူညီသောအဖြစ်မှတ်ယူနိုင်သော်လည်း strcmp () နှင့်နှိုင်းယှဉ်လျှင်ကွဲပြားခြားနားသည်။
PHP ၏ === operator သည်အမျိုးအစားများနှင့်တန်ဖိုးများနှစ်မျိုးလုံးသည်တန်းတူဖြစ်ရန်လိုအပ်သည် ။
သို့သော်အမှန်မှာ, array_intersect_UAAST_UAST_AASSOC () သည် သင်ဖြတ်သန်းသွားသောနှိုင်းယှဉ်မှု function ကိုမှီခိုအားထားနေသဖြင့်အမျိုးအစားပြောင်းလဲမှုပြ the နာကိုသင်သတိပြုမိခြင်းရှိမရှိအပေါ်မူတည်သည်။
ကွဲပြားခြားနားသောအမျိုးအစားများကြောင့်နှိုင်းယှဉ်ချက်အမှားများကိုရှောင်ရှားရန်အောက်ပါနည်းဗျူဟာများကိုအကြံပြုပါသည်။
အလုံခြုံဆုံးနည်းလမ်းမှာခလုတ်ကိုနှိုင်းယှဉ်ခြင်း function တွင်တူညီသောအမျိုးအစား (များသောအားဖြင့် string or integer) သို့ကိုယ်တိုင်ပြောင်းလဲရန်ဖြစ်သည်။
function normalize_key_compare($a, $b) {
return strcmp((string)$a, (string)$b);
}
၎င်းသည် '1' နှင့် 1 ကိုတူညီသောသော့များအဖြစ်လုပ်ဆောင်သည်။
အကယ်. သင်သည် input ကိုအချက်အလက်များကိုထိန်းချုပ်နိုင်ပါကခင်းကျင်းမှုကိုတည်ဆောက်ရာတွင်အဓိကအမျိုးအစားကိုပေါင်းစည်းရန်အကောင်းဆုံးဖြစ်သည်။ ဥပမာအားဖြင့်, သော့တွေအားလုံးကိန်းတွေအားလုံးကိုသေချာအောင်လုပ်မယ်ဆိုရင်သင်ရေးနိုင်တယ်။
$array1 = [
1 => 'apple',
2 => 'banana',
3 => 'cherry'
];
$array2 = [
1 => 'apple',
2 => 'banana',
3 => 'berry'
];
ဤနည်းအားဖြင့် default strcmp () နှိုင်းယှဉ်မှုကိုအသုံးပြုနေလျှင်ပင်၎င်းသည်အမျိုးအစားရှုပ်ထွေးမှုကိုဖြစ်ပေါ်စေလိမ့်မည်မဟုတ်ပါ။
PHP သည် '01' ကိုအလိုအလျောက်ပြောင်းလဲလိမ့်မည်။ အကယ်. သင်သည်သော့များကို string form တွင်ထိန်းသိမ်းလိုပါကကိုးကားချက်များကို အသုံးပြု. ကိုးကားချက်များကိုအသုံးပြုရမည်။
$array = [
'01' => 'value'
];
ဒါပေမယ့်သင်ရေးပြီးပြီဆိုရင်
$array = [
01 => 'value'
];
သော့သည်ကိန်းတစ်ခုဖြစ်လာလိမ့်မည်။
သင့်တွင်ကွဲပြားခြားနားသောရင်းမြစ်များမှဒေတာအစု 2 ခုရှိသည်ဆိုပါစို့။ JSONS ရှိသော့များသည်ကြိုးများဖြစ်နိုင်သည်, ဒေတာဘေ့စ်များတွင်သော့များသည်ကိန်းဂဏန်းများဖြစ်သည်။
$jsonData = json_decode('{"1":"apple","2":"banana"}', true);
$dbData = [
1 => 'apple',
2 => 'banana',
3 => 'cherry'
];
သင်နှစ်ခု၏လမ်းဆုံကိုရှာဖွေချင်သည်, သင်ဤကဲ့သို့သောကိုင်တွယ်နိုင်ပါတယ်:
$result = array_intersect_uassoc(
$jsonData,
$dbData,
function ($a, $b) {
return strcmp((string)$a, (string)$b);
}
);
print_r($result);
ဤအချက်မှာ output ကိုဖြစ်လိမ့်မည်:
Array
(
[1] => apple
[2] => banana
)
array_intersect_UAST_UAST_AASSOC () ကို သုံးတဲ့အခါအဓိကနှိုင်းယှဉ်မှုယန္တရားနဲ့ကိုက်ညီမှုညီလာရေးရဲ့အရေးပါမှုကိုသင်နားလည်အောင်သေချာအောင်လုပ်ပါ။ ဒီမှာအဓိကအကြံပြုချက်အနည်းငယ်ရှိပါတယ်:
အမြဲတမ်းသင်၏သော့အမျိုးအစားကိုသေချာစွာသေချာပါစေ။
နှိုင်းယှဉ်လုပ်ဆောင်မှုများကိုအသုံးပြုသောအခါစည်းလုံးညီညွတ်မှုအမျိုးအစားများ;
ရလဒ်များသည်မျှော်လင့်ချက်များနှင့်မကိုက်ညီပါကသော့များ၏အမျိုးအစားကွာခြားချက်ကို ဦး စွာစစ်ဆေးပါ။
ဖြစ်နိုင်လျှင်ဒေတာဖွဲ့စည်းပုံကိုကြိုတင်ပြင်ဆင်ထားပါ။
သော့ချက်အမျိုးအစားများကိုမှန်ကန်သောကိုင်တွယ်ခြင်းကအလားအလာရှိသောအမှားများကိုရှောင်ရှားနိုင်ရုံသာမက PHP အမျိုးအစားစနစ်ပေါ်တွင်သင်၏ထိန်းချုပ်မှုကိုတိုးတက်စေသည်။ PHP Array လုပ်ဆောင်ချက်များကိုပိုမိုလက်တွေ့ကျသောအချက်များအတွက် https://gitbox.net/php--pp-aray -utils သို့ဝင်ရောက်ပါ။