PHP တွင် Array_Diff_ukey () သည်အဓိကအမည်များနှစ်ခုသို့မဟုတ်နှစ်ခုထက်ပိုသောအမည်များကိုနှိုင်းယှဉ်ရန်အသုံးပြုသောကိရိယာတစ်ခုဖြစ်သည်။ Array သည်သေးငယ်သောအခါ၎င်း၏စွမ်းဆောင်ရည်သည်အတားအဆီးမဖြစ်စေသည်။ သို့သော်ကြီးမားသောဒေတာပမာဏများ၏လုပ်ဆောင်မှုဆိုင်ရာအခြေအနေများတွင် (ဥပမာထောင်ပေါင်းများစွာ၏အဓိကအမည်ရှိသည့်သို့မဟုတ်သန်းပေါင်းများစွာသော) နှင့်သန်းပေါင်းများစွာသော) နှင့်သန်းပေါင်းများစွာသော) တွင် arraiff_ukey () သည်အဆက်မပြတ်တိုးလာသည့်အချိန်ကိုတိုးပွားစေနိုင်သည်။
array_diff_ukey () သည် ပထမခင်းကျင်း၏အဓိကအကြောင်းရင်းများ၏အဓိကအကြောင်းရင်းများမှာအခြား array များ၌တည်ရှိခြင်းရှိမရှိနှင့်နှိုင်းယှဉ်ပါလိမ့်မည်။
$result = array_diff_ukey($array1, $array2, 'callback');
နှိုင်းယှဉ်မှုဖြစ်စဉ်တွင်သော့ချက်တစ်ခုစီကိုအခြားခင်းကျင်းမှုတစ်ခုမှအခြားခင်းကျင်းမှုဆိုင်ရာ function တစ်ခုမှအခြားခင်းကျင်းခြင်းဖြင့်နှိုင်းယှဉ်ရန်လိုအပ်သည်။ ထို့ကြောင့်ရှုပ်ထွေးမှုသည် O (N * m) နှင့်နီးစပ်နိုင်သည် - အထူးသဖြင့်မသင့်လျော်သောနှိုင်းယှဉ်ခြင်းလုပ်ဆောင်ချက်များကိုအသုံးပြုခြင်းအားဖြင့်စွမ်းဆောင်ရည်ပြ issues နာများကိုပိုမိုကျယ်ပြန့်စေသည်။
စွမ်းဆောင်ရည်ပျက်စီးခြင်းကိုဖြစ်ပေါ်စေနိုင်သည့်အချို့သောအခြေအနေများရှိသည်။
Array အရွယ်အစားသည်ကြီးမားသည် ။ input array သည်ထောင်ပေါင်းများစွာသောမှတ်တမ်းများကိုရောက်ရှိပြီးနှိုင်းယှဉ်စစ်ဆင်ရေးအရေအတွက်တိုးများလာသည်။
Callback functions များသည်မတတ်နိုင်သော : ထုံးစံလုပ်ဆောင်ချက်များသည်အလွန်ရှုပ်ထွေးသည်သို့မဟုတ်မလိုအပ်သောယုတ္တိဗေဒပါ 0 င်သည်။
မကြာခဏ array_diff_ukey () လုပ်ငန်းလည်ပတ်မှု - function ကိုကွင်းဆက်တစ်ခုတွင်ခေါ်ပါကအရင်းအမြစ်သုံးစွဲမှုကိုအလွန်ကျယ်ပြန့်စေလိမ့်မည်။
သင်၏နှိုင်းယှဉ်ချက်ယုတ္တိဗေဒသည်ရိုးရှင်းသောသော့ချက်အမည်သာလျှင် STRCMP , stricasecmp စသဖြင့် strcmp, stricasecmp စသည့်စံနှိုင်းယှဉ်လုပ်ဆောင်မှုများကိုသုံးနိုင်သည်။
$result = array_diff_ukey($array1, $array2, 'strcmp');
သို့မဟုတ်ထိုထက်ပိုသောတိုက်ရိုက် array_diff_ukey () ကို သုံး. တိုက်ရိုက်ရှောင်ရှားခြင်းနှင့်ပိုမိုထိရောက်သောလက်လစ်ယုတ္တိဗေဒနှင့်အတူအကောင်အထည်ဖော်ရန်:
$keys1 = array_keys($array1);
$keys2 = array_flip(array_keys($array2));
$result = [];
foreach ($keys1 as $key) {
if (!isset($keys2[$key])) {
$result[$key] = $array1[$key];
}
}
ဤနည်းလမ်းသည် callback လုပ်ဆောင်ချက်များနှင့်မလိုအပ်သော function ကိုခေါ်ဆိုခြင်းများကိုရှောင်ရှားနိုင်ပြီးစွမ်းဆောင်ရည်ကိုအကြိမ်ပေါင်းများစွာတိုးတက်စေနိုင်သည်။
ဒုတိယ array ၏သော့အမည်ကို array_flip () မှတစ်ဆင့် hash ရှာဖွေရေးဖွဲ့စည်းပုံသို့ပြောင်းခြင်းကို array_flip () သည်သော့ချက်တည်ရှိမှုရှိမရှိတရားစီရင်ခြင်းကိုအရှိန်မြှင့်နိုင်သည်။
$flippedKeys = array_flip(array_keys($array2)); // ကြိုတင်,O(n)
$result = array_filter($array1, function($value, $key) use ($flippedKeys) {
return !isset($flippedKeys[$key]);
}, ARRAY_FILTER_USE_BOTH);
array_filter () နှင့် closure နည်းလမ်းများအသုံးပြုခြင်းသည်ဖွဲ့စည်းပုံကိုရှင်းလင်းစွာပြုလုပ်ပြီးမလိုအပ်သော function overhead ကိုရှောင်ရှားသည်။
ဒေတာအသံအတိုးအကျယ်သည်အလွန်ကြီးမားပါကအချက်အလက်များကိုအသုတ်တွင်ပြုလုပ်နိုင်ပြီး PCNTL_Fork () သို့မဟုတ်လုပ်ငန်းစဉ်မှတဆင့် parallel တွင်ပြုလုပ်နိုင်သည်။ ဤနေရာတွင်ရိုးရှင်းသောဥပမာမူဘောင် (မှတ်ချက် - ဤနည်းလမ်းသည် CLI ပတ်ဝန်းကျင်မှအထောက်အပံ့လိုအပ်သည်) ။
// သုတ်ခြင်း array1 သေးငယ်တဲ့အပိုင်းပိုင်းခွဲ,fork မျိုးစုံကလေးလုပ်ငန်းစဉ်များကိုသီးခြားစီလုပ်ဆောင်သည်,ထို့နောက်ရလဒ်များကိုအကျဉ်းချုပ်
အမှန်တကယ်ဖြန့်ကျက်နေစဉ်အတွင်း၎င်းကို Redis, Message Queue များသို့မဟုတ်ဒေတာဘေ့စ်သုတ်ခြင်းနှင့်ပေါင်းစပ်နိုင်သည်။
M66.net တွင် 0 န်ဆောင်မှုတစ်ခုတွင် 0 န်ဆောင်မှုတစ်ခုတွင်အသုံးပြုသူများမှတင်ထားသောကုန်ပစ္စည်းအချက်အလက်အမြောက်အများကိုကျွန်ုပ်တို့ခွဲဝေရန်လိုသည်ဆိုပါစို့။ ထုတ်ကုန်တစ်ခုစီသည် array ၏သော့အမည်ဖြစ်သည်။ မည်သည့်ထုတ်ကုန်များသည် "အသစ်" ဖြစ်ကြောင်းရှာဖွေလိုသည်မှာ၎င်းတို့သည်တင်ထားသော array -newitememememems များတွင်တည်ရှိထားသော်လည်းလက်ရှိဒေတာဘေ့စ် Cache Array $ ရှိပြီးသားဖြစ်သည် ။
$newItems = [1001 => 'A', 1002 => 'B', 1003 => 'C'];
$existingItems = [1001 => 'A', 1004 => 'D'];
$existingKeys = array_flip(array_keys($existingItems));
$diff = array_filter($newItems, function($value, $key) use ($existingKeys) {
return !isset($existingKeys[$key]);
}, ARRAY_FILTER_USE_BOTH);
// ထုတ်လုပ်ခြင်း:[1002 => 'B', 1003 => 'C']
print_r($diff);
မူရင်း array_diff_ukey () နှင့်နှိုင်းယှဉ်ပါကဤ optimization နည်းလမ်းသည် Data volume သည်ရာနှင့်ချီသောအချက်အလက်များရောက်ရှိသည့်အချိန်များစွာဖြင့်စွမ်းဆောင်ရည်ကိုတိုးတက်စေနိုင်သည်။
ကြီးမားသောဒေတာလုပ်ဆောင်မှုအခြေအနေများတွင် array_diff_ukey () ကို အသုံးပြုသည့်အခါအောက်ပါ optimization အကြံပြုချက်များကိုလိုက်နာသင့်သည်။
built-in လုပ်ဆောင်ချက်များကိုအသုံးပြု။ ပိုမိုနှစ်သက်နှိုင်းယှဉ်။
array_flip () ကဲ့သို့သော hash အဆောက်အအုံများကို အသုံးပြု. ကွင်းအရေအတွက်ကိုလျှော့ချပါ။
ကွင်းဆက်တွင်ဤလုပ်ဆောင်မှုကိုကွပ်မျက်ခြင်းကိုထပ်ခါတလဲလဲရှောင်ကြဉ်ပါ။
ပြင်းထန်သောဖြစ်ရပ်များတွင်အပြိုင်ပြုပြင်ခြင်းမဟာဗျူဟာကို အသုံးပြု. စဉ်းစားပါ။
အထက်ပါ Optimization Methods များဖြင့် PHP ပရိုဂရမ်များရှိ PHP ပရိုဂရမ်များ၏လုပ်ဆောင်မှုဆိုင်ရာလုပ်ဆောင်ချက်သည်အပြည့်အစုံတိုးတက်လာခြင်းနှင့်ကြီးမားသောတစ်ပြိုင်နက်တည်းနှင့်ကြီးမားသောဒေတာ volume ကိုပတ်ဝန်းကျင်တွင်ဆက်လက်လုပ်ဆောင်နေဆဲဖြစ်အောင်ကောင်းမွန်စွာတိုးတက်အောင်ပြုလုပ်နိုင်သည်။