လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> array_filter () သည်ကြီးမားသောခင်းကျင်းမှုတွင်ပိုမိုကောင်းမွန်အောင်လုပ်သင့်သည်။

array_filter () သည်ကြီးမားသောခင်းကျင်းမှုတွင်ပိုမိုကောင်းမွန်အောင်လုပ်သင့်သည်။

M66 2025-06-05

PHP တွင် array_filter () သည်ခင်းကျင်းမှုတစ်ခုမှအခြေအနေများနှင့်ကိုက်ညီသောဒြပ်စင်များကိုစစ်ထုတ်ရန်အလွန်အဆင်ပြေသောလုပ်ဆောင်ချက်ဖြစ်သည်။ ဒါပေမယ့်ကျနော်တို့ (တစ်ထောင်သန်းပေါင်းများစွာသို့မဟုတ်သန်းပေါင်းများစွာသောဒြပ်စင်များပင်) နှင့်ရင်ဆိုင်နေရသောအခါစွမ်းဆောင်ရည်ပြ issues နာများထည့်သွင်းစဉ်းစားရမည့်အချက်တစ်ချက်ဖြစ်လာနိုင်သည်။

ဤဆောင်းပါးသည် Array_Filter () ၏စွမ်းဆောင်ရည်ကိုခွဲခြမ်းစိတ်ဖြာခြင်းနှင့်လက်တွေ့ကျသောပိုမိုကောင်းမွန်သောမဟာဗျူဟာအချို့ကိုစူးစမ်းလေ့လာပါမည်။

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

PHP တွင် array_filter () ၏ syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -

 $result = array_filter($array, function($value) {
    return အခေြအနေ;
});

၎င်းသည် callback function ကိုတစ်ကြိမ်စီသည်ခင်းကျင်းမှု၏အစိတ်အပိုင်းတစ်ခုစီတွင်တစ်ကြိမ်ခေါ်ဆိုခြင်းနှင့် မှန်ကန်သော ပြန်လည်ရောက်ရှိသည့်ဒြပ်စင်ကိုသိမ်းဆည်းခြင်းအားဖြင့်အလုပ်လုပ်သည်။

ဆိုလိုသည်မှာ၎င်း၏အချိန်ရှုပ်ထွေးမှုသည် အို (n) ဖြစ်သည်။

2 ။ စွမ်းဆောင်ရည် bottlenecks ကဘာလဲ?

ကြီးမားတဲ့ array ကြီးမားတဲ့ arrays နှင့်ဆက်ဆံရာတွင်စွမ်းဆောင်ရည်မြှင့်တင်ခြင်းသည်အောက်ပါရှုထောင့်များမှလာနိုင်သည်။

  1. callback function ကိုကိုယ်နှောင်ခဲသည် - သင်၏ callback ယုတ္တိဗေဒသည်အလွန်ရှုပ်ထွေးပါက၎င်းသည်စွမ်းဆောင်ရည်သုံးစွဲမှုကိုနှစ်ဆတိုးလိမ့်မည်။

  2. Memory အသုံးပြုမှု : array_filter () သည်ခင်းကျင်းမှုအသစ်တစ်ခုကိုဖန်တီးပြီးမူရင်းခင်းကျင်းမှုကိုမှတ်ဉာဏ်တွင်ဆက်လက်ထိန်းသိမ်းထားဆဲဖြစ်သောကြောင့်၎င်းသည်ကြီးမားသောဒေတာများကိုလုပ်ဆောင်သောအခါမှတ်ဉာဏ်များစွာကိုစားသုံးနိုင်သည်။

  3. အမည်မသိလုပ်ဆောင်ချက်များကိုကျော်လွှားခြင်း - အမည်မသိလုပ်ဆောင်ချက်များသည်အလွန်ကောင်းမွန်သောစွမ်းဆောင်ရည်မြင့်မားသောအခြေအနေများတွင်အလွန်စိတ်ပိုင်းဖြတ်ထားသော်လည်းစွမ်းဆောင်ရည်မြင့်မားသောအခြေအနေများတွင်သူတို့၏ခေါ်ဆိုမှုသည်သာမန်လုပ်ဆောင်မှုများထက်အနည်းငယ်ပိုမိုမြင့်မားနိုင်သည်။

ဥပမာ - အခြေခံအသုံးပြုမှုနှင့်စွမ်းဆောင်ရည်

 $largeArray = range(1, 1000000);

$filtered = array_filter($largeArray, function($value) {
    return $value % 2 === 0;
});

ဤဥပမာရှိအခြေအနေများသည်အလွန်ရိုးရှင်းသော်လည်းအစစ်အမှန်စီမံကိန်းများတွင် callback function များသည်များသောအားဖြင့်ပိုမိုရှုပ်ထွေးပြီးလုပ်ဆောင်မှုသည်သိသိသာသာလျော့နည်းသွားလိမ့်မည်။

3 ။ အကောင်းမြင်အကြံပြုချက်များ

1 ။ အစားထိုးရန်ဇာတိလုပ်ဆောင်ချက်များကိုသို့မဟုတ်ယုတ္တိဗေဒကိုအသုံးပြုပါ

အကယ်. သင်သည်ရိုးရှင်းသောစစ်ဆင်ရေးလုပ်ငန်းများကိုသာလုပ်ဆောင်ရန်လိုအပ်ပါက array_fileter () ကို အစားထိုးရန် fonteach ကို သင်အသုံးပြုနိုင်ပြီး callback လုပ်ဆောင်ချက်များကြောင့်အပို overhead ကိုရှောင်ရှားနိုင်သည်။

 $filtered = [];
foreach ($largeArray as $value) {
    if ($value % 2 === 0) {
        $filtered[] = $value;
    }
}

များသောအားဖြင့်ဤနည်းလမ်းသည် array_filter () ထက်ပိုမိုထိရောက်စေသည်။

2 ။ ပိတ်သိမ်းခြင်းကိုရှောင်ရှားရန်နှင့်အမည်ရှိလုပ်ဆောင်ချက်များကိုအသုံးပြုပါ

ပိတ်သိမ်း၏ overhead အနည်းငယ်မြင့်မားသည်။ သင်မကြာခဏခေါ်လျှင်, သင်ယုတ္တိဗေဒကိုအမည်ပေးထားသော function ကိုရေးနိုင်သည်။

 function isEven($value) {
    return $value % 2 === 0;
}

$filtered = array_filter($largeArray, 'isEven');

3 ။ chunking

အကယ်. Array သည်အလွန်ကြီးမားသည်ဆိုပါကတစ်ချိန်တည်းတွင်မှတ်ဉာဏ်ပမာဏများစွာကိုမစားနိုင်စေရန်အသုတ်များပြုလုပ်ရန်အကြံပြုသည်။

 $chunks = array_chunk($largeArray, 10000);
$filtered = [];

foreach ($chunks as $chunk) {
    $filtered = array_merge($filtered, array_filter($chunk, 'isEven'));
}

4 ။ မမှန်ကန်သောဒေတာအရင်းအမြစ်များကိုကြိုတင်မဲဖြင့်ဖယ်ထုတ်ပါ

တခါတရံကျွန်ုပ်တို့သည် PHP Layer တွင်အသုံးမကျသောအချက်အလက်များကိုရှောင်ရှားရန်ဒေတာဘေ့စ်သို့မဟုတ် interface မှတောင်းဆိုသည့်အခါဒေတာများ၏အရင်းအမြစ်၏အရင်းအမြစ်တွင်ပဏာမစစ်ထုတ်ခြင်းများပြုလုပ်နိုင်သည်။

ဥပမာအားဖြင့်:

 // လမ်းပြောင်းပြန်:ဒေတာအားလုံးကိုပထမ ဦး စွာတွားသွားပြီး၎င်းကို filter လုပ်ပါ
$data = file_get_contents('https://m66.net/api/data');
$decoded = json_decode($data, true);
$filtered = array_filter($decoded, 'isEven');

// ပိုကောင်းတဲ့ချဉ်းကပ်မှု:API 参数中加入筛选အခေြအနေ
$data = file_get_contents('https://m66.net/api/data?filter=even');
$filtered = json_decode($data, true);

5 ။ မီးစက်ကိုသုံးပါ

အချက်အလက်အားလုံးကိုတစ်ပြိုင်နက်ပြန်ပို့ရန်မလိုအပ်ပါက, သင်ကမီးစက်ကိုလွင့်ပစ်ရန်မီးစက်ကိုသုံးနိုင်သည်။

 function filterEven($array) {
    foreach ($array as $value) {
        if ($value % 2 === 0) {
            yield $value;
        }
    }
}

foreach (filterEven($largeArray) as $even) {
    // အချိန်နှင့်တပြေးညီအပြောင်းအလဲနဲ့ $even
}

မီးစက်သည်ရလဒ်အားလုံးကိုမှတ်ဉာဏ်ထဲသို့မသိမ်းဆည်းထားပါ,

4 ။ အကျဉ်းချုပ်

Array_Filter () သည်အလွန် syntax-concise ဖြစ်ပြီးအသေးစားနှင့်အလတ်စား array များနှင့်သင့်တော်သည်။ စွမ်းဆောင်ရည်သည် fonteach အစားထိုးခြင်း, callback ယုတ္တိဗေဒဆိုင်ရာယုတ္တိဗေဒ,

စွမ်းဆောင်ရည်အထိခိုက်မခံသောစီမံကိန်းများတွင်အချက်အလက်များကိုစစ်ထုတ်ရန်အသင့်တော်ဆုံးနည်းကိုရွေးချယ်ခြင်းသည်ကုဒ် optimization ၏သော့ချက်ဖြစ်သည်။