PHP တွင် Array_Filter () သည် array တစ်ခုတွင် element များကို filter လုပ်ရန်အသုံးပြုနိုင်သည့်အလွန်အသုံးများသောလုပ်ဆောင်မှုတစ်ခုဖြစ်သည်။ ဤလုပ်ဆောင်ချက်သည် array တစ်ခုနှင့် callback function ကိုလက်ခံသည် (callback function မရှိပါက boolean function ကိုသုံးပါက Boolean အသွင်ပြောင်းမှုများကိုအသုံးပြုလိမ့်မည်) နှင့်အခြေအနေများနှင့်ကိုက်ညီသော array အသစ်တစ်ခုကိုပြန်ပို့သည်။ Array_filter () သည် ရိုးရှင်းသောရှုထောင့်များတပ်ဆင်ထားသည့်အခါအလွန်ထိရောက်သော်ထိရောက်မှုရှိသော်လည်းကျွန်ုပ်တို့သည်အသိုက်ခင်းကျင်းမှုများပြုလုပ်သောအခါနေရာမှထွက်လာပုံရသည်။ ဒီတော့ဘာကြောင့် array_filter () filtered arrays တွေမလုပ်နိုင်တာလဲ။ ဒီပြ problem နာကိုဘယ်လိုဖြေရှင်းနိုင်မလဲ။ နက်ရှိုင်းစွာဆွေးနွေးကြပါစို့။
Array_Filter () ၏မူလရည်ရွယ်ချက်မှာတစ်ရှုထောင်ခင်းကျင်းမှုများကိုစစ်ထုတ်ရန်ဖြစ်သည်။ ၎င်းသည် array တစ်ခု၏ subarrays ကိုပြန်လည်ဖွဲ့စည်းခြင်းမရှိပါ။ ၎င်းသည် array_filter () သည် array ၏ထိပ်တန်းအဆင့်ဒြပ်စင်များသို့ callback function ကိုသာအသုံးပြုလိမ့်မည်။ ထို့ကြောင့်, array တစ်ခုတွင်အသိုက်ခင်းထားသော arrays များပါ 0 င်ပါက array_filter () သည် ဤအသိုက် intrays များတွင် elements များကိုထိရောက်စွာ filter မလုပ်နိုင်ပါ။
ဥပမာအားဖြင့်:
$array = [
1,
2,
[3, 4],
5,
[6, 7]
];
$result = array_filter($array, function($value) {
return $value > 3;
});
print_r($result);
output ကိုဖြစ်လိမ့်မည်:
Array
(
[1] => 2
[3] => Array
(
[0] => 3
[1] => 4
)
[4] => Array
(
[0] => 6
[1] => 7
)
)
သင်မြင်နိုင်သည်နှင့်အမျှအသိုက် arrays [3, 4] နှင့် [6, 7] နှင့် [6, 7] နှင့်ရလဒ်အနေဖြင့်ထားရှိမည်မဟုတ်ပါ။ ဘာဖြစ်လို့လဲဆိုတော့ array_filter () ဟာ အသိုက်ခင်းကျင်းမှုကိုမထည့်နိုင်လို့ပါ။
အသိုက် insays ကိုစစ်ထုတ်ရန်အလွယ်ကူဆုံးဖြေရှင်းချက်မှာ recursion ကိုအသုံးပြုရန်ဖြစ်သည်။ array_filter () ကို ပြန်လည်ထူထောင်ခြင်းဖြင့်အသိုက်ခင်းကျင်းမှုရှိဒြပ်စင်တိုင်းကိုကျွန်ုပ်တို့သေချာအောင်ပြုလုပ်နိုင်သည်။
ဤတွင် requary filtering ၏အကောင်အထည်ဖော်မှုဖြစ်ပါတယ်:
function array_filter_recursive($array, $callback) {
return array_map(function($value) use ($callback) {
if (is_array($value)) {
return array_filter_recursive($value, $callback); // ပြန်လည်ပြင်ဆင်ထားသော arrays မှပြန်လည်ခေါ်ဆိုပါ
} else {
return $callback($value) ? $value : null; // တစ် ဦး ချင်းစီဒြပ်စင် filter
}
}, $array);
}
$array = [
1,
2,
[3, 4],
5,
[6, 7]
];
$result = array_filter_recursive($array, function($value) {
return $value > 3;
});
print_r($result);
output ရလဒ်ဖြစ်လိမ့်မည်:
Array
(
[1] =>
[2] => Array
(
[1] => 4
)
[3] =>
[4] => Array
(
[0] => 6
[1] => 7
)
)
သင်မြင်နိုင်သည့်အတိုင်း Array ရှိ element တစ်ခုစီကို filtered လုပ်ပြီးအသိုက်ခင်းထားသောအရာများကိုမှန်ကန်စွာစီစစ်ထားသည်။
Array_Filter_RECACRECACRECACRECASIRE () array_map () ကို သုံး. array_map () ကို အသုံးပြု. array ကိုပြန်လည်ဖတ်ရှုခြင်းက array တစ်ခုစီအတွက်စစ်ဆေးပါ။ အကယ်. ၎င်းသည်ခင်းကျင်းမှုတစ်ခုဖြစ်ပါက array_filter_Recursive () ကိုပြန်လည်ဖွဲ့စည်းထားသည်။ အကယ်. ၎င်းသည်တစ်ခုတည်းသောတန်ဖိုးဖြစ်ပါက filter လုပ်ရန် callback function ကိုအသုံးပြုသည်။
ဤအကောင်အထည်ဖော်မှုတွင် NULL တန်ဖိုးကို filter လုပ်ထားသည်။ အမှန်တကယ်လိုအပ်ချက်များနှင့်အညီ callback function ၏အပြုအမူကိုသင်ညှိနိုင်သည်။ စစ်ထုတ်ထားသောဒြပ်စင်များကိုမည်သို့ကိုင်တွယ်ရမည်ကိုဆုံးဖြတ်နိုင်သည်။
array_filter () သူ့ဟာသူသည်ရှုထောင့်များ array များကိုသာစစ်ထုတ်နိုင်ပြီးအသိုက် arrays ကိုမကိုင်တွယ်နိုင်ပါ။ array_filter () သို့မဟုတ်အလားတူထုံးစံလုပ်ဆောင်ချက်များကိုပြန်လည်ဖွဲ့စည်းခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်အသိုက် insays များကိုထိရောက်စွာ filtering လုပ်နိုင်သည်။ သင်၏လိုအပ်ချက်များပေါ် မူတည်. ၎င်းကိုပိုမိုပြောင်းလွယ်ပြင်လွယ်စေရန်နှင့်ကွဲပြားသောအခြေအနေများနှင့်လိုက်လျောညီထွေဖြစ်အောင် Callback function ၏ယုတ္တိဗေဒကိုလည်းပြုပြင်နိုင်သည်။