PHP တွင် array_filter () သည်များသောအားဖြင့်အသုံးများသော array processing processing function ဖြစ်သည်။ အဓိကအားဖြင့် acray တစ်ခုတွင် element များကို filter လုပ်ရန်အသုံးပြုသည်။ ဤလုပ်ဆောင်ချက်သည်မည်သည့်ဒြပ်စင်ကိုထိန်းသိမ်းထားသင့်ကြောင်းသတ်မှတ်သည့် optional callback function ကိုရရှိနိုင်သည်။ အကယ်. callback function ကိုမထောက်ပံ့ပါက array_filter () သည် မှားယွင်းသော , Null , 0 , အချည်းနှီးသော string နှင့် sliper array ကဲ့သို့သော "မှားယွင်းသောတန်ဖိုးများ" နှင့်အတူခင်းကျင်းထဲရှိအရာများကိုအလိုအလျောက်ဖယ်ရှားလိမ့်မည်။
ဒီတော့မေးခွန်းကတော့ တကယ်တော့အသုံးပြုမှုမှာ array_filter () ကိုပုံမှန်အပြုအမူနဲ့အကြားစွမ်းဆောင်ရည်ကွာခြားချက်ကဘာလဲ။ ဘယ်နည်းလမ်းကပိုထိရောက်နိုင်သလဲ။
ဤဆောင်းပါးသည်ဤအသုံးပြုမှုနှစ်ခု၏ကွပ်မျက်မှုနှင့်နှိုင်းယှဉ်ခြင်းအားဖြင့်စွမ်းဆောင်ရည်ရှုထောင့်မှအသေးစိတ်လေ့လာခြင်းမှအသေးစိတ်လေ့လာဆန်းစစ်ချက်ကိုပြုလုပ်လိမ့်မည်။
// ပုံမှန်အပြုအမူ:အဆိုပါခင်းကျင်းဖယ်ရှားလိုက်ပါ“တန်ဖိုးအတု”
$result = array_filter($array);
// callback လုပ်ဆောင်ချက်များကိုသုံးပါ:သာသာ။ ကြီးမြတ် retain 0 ၏တန်ဖိုး
$result = array_filter($array, function($value) {
return $value > 0;
});
ကျွန်ုပ်တို့သည်ကြီးမားသောဒြပ်စင်များစွာနှင့်အတူခင်းကျင်းထားပြီးပုံမှန်အပြုအမူနှင့် custom callback function များကို အသုံးပြု. ၎င်းတို့ကို filter လုပ်ပါ။
function testArrayFilterDefault($array) {
$start = microtime(true);
$result = array_filter($array);
return microtime(true) - $start;
}
function testArrayFilterCallback($array) {
$start = microtime(true);
$result = array_filter($array, function($value) {
return $value > 0;
});
return microtime(true) - $start;
}
// စမ်းသပ်မှုခင်းကျင်းတည်ဆောက်ပါ,ပါဝင် 100000 ဒြပ်
$testArray = [];
for ($i = 0; $i < 100000; $i++) {
$testArray[] = $i % 2 === 0 ? 0 : $i; // ထက်ဝက်သည် 0,ထက်ဝက်သည်整数
}
// စမ်းသပ်မှုတစ်ခုလုပ်ဆောင်ပါ
$timeDefault = testArrayFilterDefault($testArray);
$timeCallback = testArrayFilterCallback($testArray);
echo "ပုံမှန်အပြုအမူ执行时间:{$timeDefault} စက်ဏန့်\n";
echo "callback function ကိုကွပ်မျက်အချိန်:{$timeCallback} စက်ဏန့်\n";
အထက်တွင် script ကိုဖွင့်ပါ။ ပုံမှန်အပြုအမူသည်များသောအားဖြင့်ပုံမှန်အပြုအမူကိုပိုမိုမြန်ဆန်ကြောင်းတွေ့ရှိလိမ့်မည်။ အကြောင်းပြချက်များမှာအောက်ပါအတိုင်းဖြစ်သည် -
ပုံမှန်အပြုအမူကို C ဘာသာစကားအလွှာမှအကောင်အထည်ဖော်သည့်ယုတ္တိဗေဒကိုတည်ဆောက်ထားပြီးကွပ်မျက်မှုစွမ်းဆောင်ရည်မြင့်မားသည်။
Callback function များကိုအသုံးပြုသောအခါ PHP သည်အသုံးပြုသူသတ်မှတ်ထားသောလုပ်ဆောင်ချက်များကိုအချိန်တိုင်းခေါ်ဆိုရန်လိုအပ်သည်။
နမူနာ (တိကျသောစက်ပေါ်တွင် မူတည်. အနည်းငယ်ကွဲပြားခြားနားသော)
ပုံမှန်အပြုအမူ执行时间:0.012345 စက်ဏန့်
callback function ကိုကွပ်မျက်အချိန်:0.035678 စက်ဏန့်
သင်မြင်နိုင်သည့်အတိုင်း ပုံမှန်အပြုအမူသည် 2 ဆပိုမိုမြန်ဆန်သည် ။
ပုံမှန်အပြုအမူသည်ပိုမိုကောင်းမွန်သော်လည်း၎င်းတွင်ကန့်သတ်ချက်များရှိသည် - "မှားယွင်းသောတန်ဖိုးများ" ကိုသာဖယ်ရှားနိုင်သည်။ အကယ်. သင်၏ filtering ယုတ္တိဗေဒသည်အနည်းငယ်ရှုပ်ထွေးမှုအနည်းငယ်သာရှုပ်ထွေးသောတန်ဖိုးများကိုထိန်းသိမ်းထားခြင်း, ချက်လက်မှတ်များ, စစ်ဆေးမှုများစသည်ဖြင့်သင် callback function ကိုလိုအပ်နေဆဲဖြစ်သည်။
ဥပမာအားဖြင့်:
// ထူးဆန်းတန်ဖိုးများကိုစောင့်ရှောက်လော့
array_filter($array, function($v) {
return $v % 2 !== 0;
});
၎င်းကိုပုံမှန်အပြုအမူမှတဆင့်အောင်မြင်မှုမရနိုင်ပါ။
$userInput = [
'name' => 'Alice',
'email' => '',
'age' => 0,
'newsletter' => false,
];
$cleanedInput = array_filter($userInput); // 只保留非တန်ဖိုးအတု字段
// ထုတ်လုပ်ခြင်း ['name' => 'Alice']
ဤဥပမာတွင်သင်သည် ( မှားယွင်းသော , အချည်းနှီးသောကြိုးများစသဖြင့်) ဖြည့်ဆည်းဖွယ်ကောင်းသောလယ်ကွင်းများကိုဖယ်ရှားလိုပါကပုံမှန်အပြုအမူသည်အလွန်သင့်လျော်သည်။ အကယ်. သင်သည်အချည်းနှီးသော string ကိုလယ်ကွင်းများကိုသာထိန်းသိမ်းလိုပါက callback ကိုသုံးရန်လိုအပ်သည်။
$cleanedInput = array_filter($userInput, function($value) {
return is_string($value) && trim($value) !== '';
});
ဘယ်လိုသုံးရမလဲ | ပြပဲှ | ပြောင်းလွယ်ပြင်လွယ် | ကြည့်ရှုပါ |
---|---|---|---|
ပုံမှန်အပြုအမူ | ? အကျိုးဖြစ်ထွန်းစေနိုင်သော | ? ကန့်သတ် | မှားယွင်းသောတန်ဖိုးများကိုဖယ်ရှားပါ |
callback လုပ်ဆောင်ချက်များကိုသုံးပါ | ? အနည်းငယ်နှေးကွေး | ? ကေှးနိုင်သော | စိတ်ကြိုက် filtering ယုတ္တိဗေဒ |
အကြံပြုချက် - အကယ်. သင်သည်မှားယွင်းသောတန်ဖိုးများကိုဖယ်ရှားပါကပုံမှန်အပြုအမူကိုသုံးပါ။ ရှုပ်ထွေးသောယုတ္တိဗေဒလိုအပ်ပါက callback လုပ်ဆောင်ချက်များကိုအသုံးပြုရန်မလွှဲမရှောင်သာဖြစ်သည်။