PHP တွင် array_diff_ukey () သည်အဓိကအကြောင်းရင်းနှစ်ခုသို့မဟုတ်နှစ်ခုထက်ပိုသောသော့ချက်အမည်များကိုအသုံးပြုသည်။ များစွာသော developer များကစပ်စုကြလိမ့်မည်:
ဤဆောင်းပါးသည်ဤမေးခွန်း၏အဖြေကိုနိယာမခွဲခြမ်းစိတ်ဖြာခြင်းနှင့်ကုဒ်တိုင်းတာခြင်းမှတဆင့်လေ့လာသုံးသပ်လိမ့်မည်။
တရားဝင်စာရွက်စာတမ်းများကိုအောက်ပါအတိုင်းသတ်မှတ်ထားသည်။
array_diff_ukey(array $array1, array $array2, callable $key_compare_func): array
ဒီ function ကို array1 မှာရှိတဲ့ array1 မှာ element တွေကိုပြန်ပေးလိမ့်မယ်။ အဓိကအမည်နှိုင်းယှဉ်မှုသည်သင်၏စိတ်ကြိုက် callback function ကိုအသုံးပြုသည်။
အဓိကအချက်က သော့များကိုသာနှိုင်းယှဉ်ခြင်း, တန်ဖိုးများကိုနှိုင်းယှဉ်ခြင်းမရှိပါ ။ အတွင်းပိုင်းတွင်ခင်းကျင်းရန်သို့မဟုတ်ပိုမိုကောင်းမွန်အောင်ပြုလုပ်လိမ့်မည်မဟုတ်ကြောင်းရှင်းလင်းချက်မရှိပါ ။
Sorting သည်ရှာဖွေရေးစွမ်းဆောင်ရည်ကိုတိုးတက်စေရန်အတွက်အထောက်အကူပြုရန်အထောက်အကူပြုသည်ဟုကျွန်ုပ်တို့မကြာခဏဆိုထားသည်မှာ Binary Search သည်ရှာဖွေခြင်းစသည်တို့ကိုအသုံးပြုခြင်းအားဖြင့် array_diff_ukey () သည် သော့ချက်အမည်များကိုနှိုင်းယှဉ်ရန်သင်၏စိတ်ကြိုက်နှိုင်းယှဉ်ခြင်း function ကိုအခြေခံသည်။ ၎င်း၏အကောင်အထည်ဖော်မှုသည် "item-by-by-item နှိုင်းယှဉ်မှု" ကိုပိုမိုလိုလားသည်။
အဓိပ်ပါယျမှာ:
ကြိုတင်ဆိုလျှင်ရလဒ်များအပေါ်အကျိုးသက်ရောက်မှုမရှိပါ ။
များသောအားဖြင့်စွမ်းဆောင်ရည်ကိုတိုးတက်အောင်မလုပ်နိုင်ပါ ။ အဲဒီအစား, အလုံးစုံထိရောက်မှုအနည်းငယ်လျှော့ချနိုင်သည့်အပိုဆောင်း sorting လုပ်ငန်းစဉ်တစ်ခုရှိသည်။
သို့သော်၎င်းကိုစမ်းသပ်ရန်ကုဒ်အပိုင်းအစတစ်ခုကိုအသုံးပြုကြပါစို့။
<?php
function compare_keys($a, $b) {
return $a <=> $b;
}
// နှစ်ခု array ထုတ်လုပ်သည်,ပါဝင်10000ဒြပ်
$array1 = [];
$array2 = [];
for ($i = 0; $i < 10000; $i++) {
$key = "key" . rand(1, 20000);
$array1[$key] = "value1";
$array2[$key] = "value2";
}
// တစ် ဦး unsorted ခင်းကျင်း cloning
$unsorted1 = $array1;
$unsorted2 = $array2;
// sort array
$sorted1 = $array1;
$sorted2 = $array2;
ksort($sorted1);
ksort($sorted2);
// လမိသောဗားရှင်းစမ်းသပ်
$start1 = microtime(true);
$result1 = array_diff_ukey($unsorted1, $unsorted2, 'compare_keys');
$time1 = microtime(true) - $start1;
// test sorted ဗားရှင်း
$start2 = microtime(true);
$result2 = array_diff_ukey($sorted1, $sorted2, 'compare_keys');
$time2 = microtime(true) - $start2;
echo "မပြတ်လုပ်ဆောင်မှုအချိန်: {$time1} စက်ဏန့်\n";
echo "ကွပ်မျက်အချိန် sort: {$time2} စက်ဏန့်\n";
// output ရလဒ်များကိုနှိုင်းယှဉ်
echo "မလွယ်ကူသောရလဒ်များ: " . count($result1) . "\n";
echo "Sorted ရလဒ်များအရေအတွက်: " . count($result2) . "\n";
// ဥပမာအသုံးပြုမှု URL(အစားထိုးလိုက်ပါ m66.net)
echo "အသေးစိတ်အတွက် ကျေးဇူးပြု. ကြည့်ပါ:https://m66.net/php-array-diff-ukey-performance\n";
?>
များသောအားဖြင့်ဤကုဒ်၏ output သည်အောက်ပါအခြေအနေနှင့်ဆင်တူလိမ့်မည် -
မပြတ်လုပ်ဆောင်မှုအချိန်: 0.095 စက်ဏန့်
ကွပ်မျက်အချိန် sort: 0.102 စက်ဏန့်
ရလဒ်များသည်အနည်းငယ်ကွဲပြားနိုင်သည်, သို့သော်သေချာသည် -
? ကြိုတင်ခွဲခြင်းသည် array_diff_ukey () ၏စွမ်းဆောင်ရည်ကိုအမှန်တကယ်တိုးတက်စေခြင်းမဟုတ်ဘဲအနည်းငယ်နှေးကွေးနိုင်သည်။
Array_diff_ukey () သည်သော့ချက်အမည်များကို callbacks တစ်ခုဖြင့်သော့ချက်အမည်များနှင့်နှိုင်းယှဉ်ပါက,
သင်၏နှိုင်းယှဉ်ခြင်း function သည်သော့ချက် (ရှားပါး) အပေါ်မူတည်သည်မဟုတ်လျှင် array ကိုကြိုတင်ခွဲရန်မလိုအပ်ပါ ။
စွမ်းဆောင်ရည်ကိုတိုးတက်အောင်လုပ်လိုပါကသင်၏ Keyname ဖွဲ့စည်းပုံကိုပိုမိုကောင်းမွန်စေရန်သို့မဟုတ် Array အရွယ်အစားကိုလျှော့ချရန်စဉ်းစားပါ။
ပိုမိုပေါ့ပါးသောစိတ်ကြိုက်နှိုင်းယှဉ်မှု function ကိုအသုံးပြုခြင်းသည်ပိုမိုကောင်းမွန်သောအချက်ဖြစ်သည်။
လိုအပ်ပါက array_diff_ukey () input array ၏အဓိပ္ပာယ်မရှိသောကြိုတင်သတ်မှတ်ထားခြင်းမပြုပါနှင့်။