PHP တွင် array_filter () သည် calnback function ၏ရလဒ်ပေါ် မူတည်. element တစ်ခုအတွက် element များကို filter လုပ်ရန်အသုံးပြုသောအလွန်အသုံးများသော array function တစ်ခုဖြစ်သည်။ ၎င်း၏အသုံးပြုမှုသည်ရိုးရှင်းသည်ဟုထင်ရသော်လည်း developer များစွာသည်အထူးသဖြင့် callback လုပ်ဆောင်ချက်များကိုရေးသားသည့်အခါ၎င်းတို့ကိုပြန်လည်ထူထောင်ရေးတန်ဖိုး၏ "boolean value" ၏ "boolean ဆိုလို" ခြင်းကြောင့်ရှုပ်ထွေးနေသည်။
ဥပမာအားဖြင့်တစ်ယောက်ယောက်ကအောက်ပါကုဒ်ကိုရေးခဲ့တယ်။
$input = [0, 1, 2, 3, 4, 5];
$result = array_filter($input, function($value) {
return $value % 2; // ထူးဆန်းနံပါတ်များကိုစောင့်ရှောက်ရန်မျှော်လင့်ပါတယ်
});
print_r($result);
ရလဒ်သည် output ကို [1, 3, 5] သည်မျှော်လင့်ထားပြီးရလဒ်လည်းဖြစ်သည်။ သို့သော်သင်သည်ဤဥပမာကိုအနည်းငယ်ပြုပြင်မွမ်းမံပါကအလွယ်တကူရှုပ်ထွေးစေနိုင်သည်။
$input = [0, 1, 2, 3, 4, 5];
$result = array_filter($input, function($value) {
return $value % 2 == 0; // နံပါတ်များကိုပင်စောင့်ရှောက်ရန်မျှော်လင့်ပါတယ်
});
print_r($result);
လူအများစုကဤဒြပ်စင်များကို စစ်မှန်သော ပြန်လာသည့်အခါသိမ်းဆည်းထားလျှင် , ဒါကအမှန်ပဲ။ သို့သော်အဓိကသော့ချက်မှာ PHP သည် dynamically typed language ဖြစ်ပြီး, callback function မှပြန်လာသောတန်ဖိုးကို boolean value သို့ချလိမ့်မည်။
PHP ရှိဤတန်ဖိုးများကို မှားယွင်းစွာ ပြောင်းလဲခြင်းသို့ပြောင်းလဲခြင်းခံရသည်။
Boolean Value False
integer 0
floating အမှတ်အမျိုးအစား 0.0
အချည်းနှီးသော string '' သို့မဟုတ် '0' '
အချည်းနှီးသောခင်းကျင်း []
တရားစွာလဲှ
ဒါကြောင့်သင်အောက်ပါကုဒ်ကိုရေးတဲ့အခါ:
$input = ['a', '', 'b', '0', 'c'];
$result = array_filter($input);
print_r($result);
output ကိုသင်တွေ့လိမ့်မည်။
Array
(
[0] => a
[2] => b
[4] => c
)
callback function ကိုမသတ်မှတ်ပါက array_filter () သည် boolean သပိတ်မှောက်မှုကိုအသုံးပြုသည်။ ဒါကြောင့်နှစ် ဦး စလုံးအချည်းနှီးသော strings 'နှင့်' 0 '' နှင့် '0' 'နှင့်' 0 ' filtered နေကြသည် - သူတို့က false မှပြောင်းလဲနေကြသည်။
ဤအချိန်တွင်လူအများစုက "ငါတန်ဖိုးရှိပြီ, ဘာကြောင့်ဒီကိုစစ်ထုတ်ပစ်တာလဲ"
developer များသည် boolean အမျိုးအစားများကိုပြန်ပို့ရန် collbacks များကိုအသုံးပြုသောအခါနောက်ထပ်နားလည်မှုလွဲမှားခြင်းများကိုပြုလုပ်လေ့ရှိသည်။
$input = [1, 2, 3, 4, 5, 6];
$result = array_filter($input, function($value) {
return $value & 1; // bitwise နှင့်ထူးဆန်းနံပါတ်များကိုစစ်ကြောစီရင်ပါ
});
print_r($result);
ဤကုဒ်သည်မှန်ကန်သော်လည်း၎င်းသည်အစပြုသူများကိုအရူးမောင်းနိုင်သည်။ $ တန်ဖိုးနှင့် 1 ၏ရလဒ်သည် 0 သို့မဟုတ် 1 ဖြစ်သည်။ $ တန်ဖိုး သည်ပင်နံပါတ်တစ်ခု၌ပင်နံပါတ်တစ်ခု၌ပင်ရလဒ်သည် 0 င် ဖြစ်သည် ။ ဤအချိန်တွင် 1 သို့မဟုတ် 0 သည် 0 င်ခွင့်ရရှိသောတန်ဖိုးသည်ဒြပ်စင်များကိုဆက်လက်ထိန်းသိမ်းထားသည်မဟုတ်ဘဲဤတန်ဖိုးများ၏စွမ်းဆောင်ရည်ကို Boolean ပတ်ဝန်းကျင်တွင်ရှိသည်။
လူအများသတိမပြုမိသည့်နောက်တစ်ခုမှာ array_filter () မူရင်းခင်းကျင်းမှု၏အဓိကအကြောင်းကိုဆက်လက်ထိန်းသိမ်းထားသည်။ သင်အညွှန်းကိုပြန်လည်တည်ဆောက်လိုပါက, သင် array_values () ကို သုံးနိုင်သည်။
$result = array_values(array_filter($input, function($value) {
return $value > 2;
}));
ဥပမာအားဖြင့်, သင်သည် URLs အစုတခုမှ တိုကင် parameters တွေကိုမပိတ်ဘဲ link များကို filter လုပ်လိုသည်။
$urls = [
'https://m66.net/page1?token=abc',
'https://m66.net/page2',
'https://m66.net/page3?token=xyz',
];
$filtered = array_filter($urls, function($url) {
$parts = parse_url($url);
if (!isset($parts['query'])) {
return false;
}
parse_str($parts['query'], $query);
return isset($query['token']);
});
print_r($filtered);
ဤကုဒ်၏ callback function သည်အမျိုးအစားပြောင်းလဲခြင်းဖြင့်ရှုပ်ထွေးမှုမရှိစေရန် boolean value ( true or false ) ကိုအတိအလင်းပြန်ပို့သည်။
လူအများစုက array_filter () callback function ကိုပြန်ပို့ခြင်း၏ "Boolean အဓိပ္ပာယ်" ကိုနားမလည်ကြပါ။ နောက်ဆုံးခွဲခြမ်းစိတ်ဖြာခြင်းတွင်၎င်းတို့သည် PHP ရှိ "စစ်မှန်သောနှင့်မှားယွင်းသောတန်ဖိုးများ" ကိုနက်ရှိုင်းစွာနားလည်ခြင်းမရှိပါ။ ယုံကြည်စိတ်ချရသော array_filter () callback function ကိုရေးရန်,
callback function ကို၏ပြန်လာတန်ဖိုးကို boolean value သို့ကူးပြောင်းသည်။
အမျိုးအစားတစ်ခုသို့မဟုတ် string ကဲ့သို့သောနံပါတ် (string) ကဲ့သို့သော "တန်ဖိုး" ရှိသည်ဖြစ်စေ မ မူတည်. မမူတည်ပါ ။
သင်၏ရည်ရွယ်ချက်သည်ရှင်းလင်းပြတ်သားသောယုတ္တိဆိုင်ရာဆုံးဖြတ်ချက်ချပါက Boolean Errame ကိုအတိအလင်းရေးပါ။
ဤနည်းအားဖြင့်သင်သည်ဤအစွမ်းထက်။ နားလည်မှုလွဲခြင်းဆိုင်ရာလုပ်ဆောင်မှုကိုလုံးလုံးလျားလျားကျွမ်းကျင်စွာကျွမ်းကျင်စွာပြုလုပ်နိုင်သည်။