PHP Development တွင် array_filter သည်အသုံးများသော array processing processing function တစ်ခုဖြစ်သည်။ ဤလုပ်ဆောင်မှု၏အခြေခံ syntax သည်ရိုးရှင်းပါသည်, သို့သော်အလွယ်တကူသတိမထားမိသောအသေးစိတ်အချက်အလက်များရှိသည်။ ဒီလိုမှမဟုတ်ရင် code ဟာမျှော်လင့်ထားတဲ့အတိုင်းအလုပ်မလုပ်နိုင်ပါ, ဤဆောင်းပါးသည်ဤပြ problem နာ ကို နက်နက်ရှိုင်းရှိုင်းခွဲခြမ်းစိတ်ဖြာပါလိမ့်မည်။
Array_Filter ၏လုပ်ဆောင်ချက်သည်တန်ဖိုးများရှိတန်ဖိုးများကို filter လုပ်ရန် callback function ကိုအသုံးပြုရန်နှင့် callback function ကို မှန်ကန်စွာ ပြန်လည်ရောက်ရှိသည့်ဒြပ်စင်များသာဖြစ်သည်။ အခြေခံအသုံးပြုမှုမှာအောက်ပါအတိုင်းဖြစ်သည် -
$input = [1, 2, 3, 4, 5];
$output = array_filter($input, function($value) {
return $value > 3;
});
// ထုတ်လုပ်ခြင်း: [4, 5]
အထက်ပါကုဒ်တွင် array_filter သည် အမည်မသိလုပ်ဆောင်မှုများမှတဆင့် 3 ထက်ပိုသောတန်ဖိုးများကိုစစ်ထုတ်သည်။
ပိုပြီးရှုပ်ထွေးတဲ့မြင်ကွင်းကိုကြည့်ရအောင်။ ပြောင်းလဲနေသောအခြေအနေပေါ်မူတည်ပြီးတန်ဖိုးများတွင်တန်ဖိုးများကိုစီရန်လိုအပ်သည်။ ဤအခြေအနေကိုပြင်ပ variable ကို $ တံခါးခုံ ဖြင့်ဆုံးဖြတ်သည်။
$threshold = 3;
$input = [1, 2, 3, 4, 5];
$output = array_filter($input, function($value) {
return $value > $threshold; // ? အမှားတစ်ခုသို့မဟုတ်ပြ a နာတစ်ခုဖြစ်လိမ့်မည်
});
ဤကုဒ်ကို run သောအခါ PHP သည် သတ်မှတ်ထားသော variable ကို အချက်ပြလိမ့်မည်။ ဘာဖြစ်လို့လဲဆိုတော့ အမည်မသိ function scope သည်ပြင်ပနယ်ပယ်တွင် variable များကိုတိုက်ရိုက်ဝင်ရောက်ကြည့်ရှုခြင်းမဟုတ်ပါ ။
အထက်ပါပြ problem နာကိုဖြေရှင်းရန် PHP သည် အသုံးပြုမှု သော့ချက်စာလုံးကိုထောက်ပံ့ပေးပြီး,
$threshold = 3;
$input = [1, 2, 3, 4, 5];
$output = array_filter($input, function($value) use ($threshold) {
return $value > $threshold;
});
// ထုတ်လုပ်ခြင်း: [4, 5]
အသုံးပြုမှုမှတဆင့် ($ တံခါး ခုံ ) အားဖြင့်အမည်မသိ function ကိုမှန်မှန်ကန်ကန် variable ကိုမှန်ကန်စွာဝင်ရောက်နိုင်ပါသည်။
သင် အသုံးပြုသော အမည်ဝှက်ထားသောလုပ်ဆောင်ချက်များတွင်ပြင်ပ variable များကိုမိတ်ဆက်ရန် PHP သည်ဤ variable များကို function ကို တန်ဖိုးတစ်ခုအဖြစ် ပြောင်းလဲခြင်းဖြစ်သည်။ ဆိုလိုသည်မှာသင်သည်အမည်မသိ function တစ်ခုတွင် $ တံခါးခုံကို ပြုပြင်မွမ်းမံလျှင်မူရင်း variable ကိုအကျိုးသက်ရောက်လိမ့်မည်မဟုတ်ပါ။
ဥပမာတစ်ခုကိုကြည့်ရအောင်။
$threshold = 3;
$filter = function($value) use ($threshold) {
$threshold = 10;
return $value > $threshold;
};
echo $threshold; // 仍然ထုတ်လုပ်ခြင်း 3
အကယ်. သင်သည်အမည်မသိ function တစ်ခုတွင်ပြင်ပ variable ကို၏တန်ဖိုးကိုပြောင်းလဲလိုပါကရည်ညွှန်းချက်ကို သုံး. ၎င်းကိုသင်ဖြတ်သန်းရန်လိုအပ်သည်။
$threshold = 3;
$filter = function($value) use (&$threshold) {
$threshold = 10;
return true;
};
$filter(5);
echo $threshold; // ထုတ်လုပ်ခြင်း 10
သင်သည်ဆောင်းပါးများစာရင်းတွင်သင်လုပ်ဆောင်နေသည်ဆိုပါစို့။ သင်သီးခြားအမျိုးအစားတစ်ခုအတွက်ဆောင်းပါးများကိုစစ်ထုတ်လိုပါကအမျိုးအစားအိုင်ဒီသည်ပြင်ပ variable တစ်ခုတွင်ဖြစ်သည်။ အသုံးပြုမှု ကိုသုံးရန်မေ့နေလျှင်,
$categoryId = 2;
$articles = [
['id' => 1, 'category_id' => 1],
['id' => 2, 'category_id' => 2],
['id' => 3, 'category_id' => 3],
];
$filtered = array_filter($articles, function($article) {
return $article['category_id'] == $categoryId;
});
print_r($filtered); // ? အမှား,$categoryId undefined
အစား အသုံးပြုမှု ပြီးနောက်:
$filtered = array_filter($articles, function($article) use ($categoryId) {
return $article['category_id'] == $categoryId;
});
// ? မှန်ကန်သော filtering,ရလဒ်ကတော့ ID အတွက် 2 ဆောင်းပါးများ
array_filter နှင့်အခြားအဆင့်မြင့်လုပ်ဆောင်မှုများကိုအသုံးပြုသည့်အခါ (ဥပမာ array_map array_reduce anduce စသည်တို့) ကိုအသုံးပြုသောအခါ calmback function တွင်ပြင်ပ variable များကိုသုံးရန်လိုအပ်ပါကဤ variable များကိုအတိအလင်းဖြတ်သန်းရန် အသုံးပြုမှု သော့ချက်စာလုံးကိုသေချာစွာအသုံးပြုရန်သေချာပါစေ။ ဒီလိုမှမဟုတ်ရင် code အမှားအယွင်းများသို့မဟုတ်ယုတ္တိနည်းခြွင်းချက်များဖြစ်ပေါ်စေနိုင်သောဤ variable များကိုသင်ဝင်ရောက်နိုင်မည်မဟုတ်ပါ။
၎င်းသည် PHP တွင်ပိတ်ပစ်ပိတ်ဆို့ခြင်း၏အရေးကြီးသောကဏ် feature တစ်ခုဖြစ်သည်။
ဒီဆောင်းပါးကဒီသေးငယ်တဲ့ထောင်ချောက်ငယ်လေးကိုရှောင်ကြဉ်နိုင်အောင်ဒီဆောင်းပါးကကူညီပေးနိုင်တယ်လို့မျှော်လင့်ပါတယ်။ အကယ်. သင်သည်အလားတူပြ problems နာများကိုပိတ်ထားသည့်အခါအလားတူပြ problems နာများကိုကြုံတွေ့ရပါက အသုံးပြုမှု ပျောက်ဆုံးနေသည်ကိုသင်လည်းစစ်ဆေးနိုင်သည်။