လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> array ကြိုတင်စီစဉ်ထားခြင်းသည် array_diff_ukey () ထိရောက်မှုကိုတိုးတက်စေသည်။

array ကြိုတင်စီစဉ်ထားခြင်းသည် array_diff_ukey () ထိရောက်မှုကိုတိုးတက်စေသည်။

M66 2025-06-06

PHP တွင် array_diff_ukey () သည်အဓိကအကြောင်းရင်းနှစ်ခုသို့မဟုတ်နှစ်ခုထက်ပိုသောသော့ချက်အမည်များကိုအသုံးပြုသည်။ များစွာသော developer များကစပ်စုကြလိမ့်မည်:

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

1 ။ array_diff_ukey () အလုပ်လုပ်သလဲ?

တရားဝင်စာရွက်စာတမ်းများကိုအောက်ပါအတိုင်းသတ်မှတ်ထားသည်။

 array_diff_ukey(array $array1, array $array2, callable $key_compare_func): array

ဒီ function ကို array1 မှာရှိတဲ့ array1 မှာ element တွေကိုပြန်ပေးလိမ့်မယ်။ အဓိကအမည်နှိုင်းယှဉ်မှုသည်သင်၏စိတ်ကြိုက် callback function ကိုအသုံးပြုသည်။

အဓိကအချက်က သော့များကိုသာနှိုင်းယှဉ်ခြင်း, တန်ဖိုးများကိုနှိုင်းယှဉ်ခြင်းမရှိပါအတွင်းပိုင်းတွင်ခင်းကျင်းရန်သို့မဟုတ်ပိုမိုကောင်းမွန်အောင်ပြုလုပ်လိမ့်မည်မဟုတ်ကြောင်းရှင်းလင်းချက်မရှိပါ

2 ။ ၎င်းကိုကြိုတင်သတ်မှတ်ထားခြင်းရှိမရှိအကျိုးသက်ရောက်ပါသလား။

Sorting သည်ရှာဖွေရေးစွမ်းဆောင်ရည်ကိုတိုးတက်စေရန်အတွက်အထောက်အကူပြုရန်အထောက်အကူပြုသည်ဟုကျွန်ုပ်တို့မကြာခဏဆိုထားသည်မှာ Binary Search သည်ရှာဖွေခြင်းစသည်တို့ကိုအသုံးပြုခြင်းအားဖြင့် array_diff_ukey () သည် သော့ချက်အမည်များကိုနှိုင်းယှဉ်ရန်သင်၏စိတ်ကြိုက်နှိုင်းယှဉ်ခြင်း function ကိုအခြေခံသည်။ ၎င်း၏အကောင်အထည်ဖော်မှုသည် "item-by-by-item နှိုင်းယှဉ်မှု" ကိုပိုမိုလိုလားသည်။

အဓိပ်ပါယျမှာ:

  • ကြိုတင်ဆိုလျှင်ရလဒ်များအပေါ်အကျိုးသက်ရောက်မှုမရှိပါ

  • များသောအားဖြင့်စွမ်းဆောင်ရည်ကိုတိုးတက်အောင်မလုပ်နိုင်ပါ ။ အဲဒီအစား, အလုံးစုံထိရောက်မှုအနည်းငယ်လျှော့ချနိုင်သည့်အပိုဆောင်း sorting လုပ်ငန်းစဉ်တစ်ခုရှိသည်။

သို့သော်၎င်းကိုစမ်းသပ်ရန်ကုဒ်အပိုင်းအစတစ်ခုကိုအသုံးပြုကြပါစို့။

3 ။ အမှန်တကယ်တိုင်းတာခြင်း - 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";
?>

IV ။ ရလဒ်များကိုခွဲခြမ်းစိတ်ဖြာခြင်း

များသောအားဖြင့်ဤကုဒ်၏ output သည်အောက်ပါအခြေအနေနှင့်ဆင်တူလိမ့်မည် -

 မပြတ်လုပ်ဆောင်မှုအချိန်: 0.095 စက်ဏန့်
ကွပ်မျက်အချိန် sort: 0.102 စက်ဏန့်

ရလဒ်များသည်အနည်းငယ်ကွဲပြားနိုင်သည်, သို့သော်သေချာသည် -

? ကြိုတင်ခွဲခြင်းသည် array_diff_ukey () ၏စွမ်းဆောင်ရည်ကိုအမှန်တကယ်တိုးတက်စေခြင်းမဟုတ်ဘဲအနည်းငယ်နှေးကွေးနိုင်သည်။

Array_diff_ukey () သည်သော့ချက်အမည်များကို callbacks တစ်ခုဖြင့်သော့ချက်အမည်များနှင့်နှိုင်းယှဉ်ပါက,

V. အကြံပြုချက်များနှင့်နိဂုံးချုပ်

  • သင်၏နှိုင်းယှဉ်ခြင်း function သည်သော့ချက် (ရှားပါး) အပေါ်မူတည်သည်မဟုတ်လျှင် array ကိုကြိုတင်ခွဲရန်မလိုအပ်ပါ

  • စွမ်းဆောင်ရည်ကိုတိုးတက်အောင်လုပ်လိုပါကသင်၏ Keyname ဖွဲ့စည်းပုံကိုပိုမိုကောင်းမွန်စေရန်သို့မဟုတ် Array အရွယ်အစားကိုလျှော့ချရန်စဉ်းစားပါ။

  • ပိုမိုပေါ့ပါးသောစိတ်ကြိုက်နှိုင်းယှဉ်မှု function ကိုအသုံးပြုခြင်းသည်ပိုမိုကောင်းမွန်သောအချက်ဖြစ်သည်။

  • လိုအပ်ပါက array_diff_ukey () input array ၏အဓိပ္ပာယ်မရှိသောကြိုတင်သတ်မှတ်ထားခြင်းမပြုပါနှင့်။

နောက်ထပ်ဖတ်ရှုခြင်း