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

array_filter ၏ပြ problem နာကိုမည်သို့ဖြေရှင်းရမည် () အသိုက် incray များကိုစစ်ထုတ်ရန်ပျက်ကွက်ခြင်း

M66 2025-06-05

PHP တွင် Array_Filter () သည် array တစ်ခုတွင် element များကို filter လုပ်ရန်အသုံးပြုနိုင်သည့်အလွန်အသုံးများသောလုပ်ဆောင်မှုတစ်ခုဖြစ်သည်။ ဤလုပ်ဆောင်ချက်သည် array တစ်ခုနှင့် callback function ကိုလက်ခံသည် (callback function မရှိပါက boolean function ကိုသုံးပါက Boolean အသွင်ပြောင်းမှုများကိုအသုံးပြုလိမ့်မည်) နှင့်အခြေအနေများနှင့်ကိုက်ညီသော array အသစ်တစ်ခုကိုပြန်ပို့သည်။ Array_filter () သည် ရိုးရှင်းသောရှုထောင့်များတပ်ဆင်ထားသည့်အခါအလွန်ထိရောက်သော်ထိရောက်မှုရှိသော်လည်းကျွန်ုပ်တို့သည်အသိုက်ခင်းကျင်းမှုများပြုလုပ်သောအခါနေရာမှထွက်လာပုံရသည်။ ဒီတော့ဘာကြောင့် array_filter () filtered arrays တွေမလုပ်နိုင်တာလဲ။ ဒီပြ problem နာကိုဘယ်လိုဖြေရှင်းနိုင်မလဲ။ နက်ရှိုင်းစွာဆွေးနွေးကြပါစို့။

အဘယ်ကြောင့် array_filter () filtered arrays cest filtered arrays လို့မရပါဘူး?

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 () ဟာ အသိုက်ခင်းကျင်းမှုကိုမထည့်နိုင်လို့ပါ။

ဒီပြ problem နာကိုဘယ်လိုဖြေရှင်းမလဲဆိုတာကိုဘယ်လိုဖြေရှင်းမလဲ။

အသိုက် 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 ၏ယုတ္တိဗေဒကိုလည်းပြုပြင်နိုင်သည်။