လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> အချည်းနှီးသောကြိုးများကိုလျစ်လျူရှုထားပါ။ 0 နှင့် Null အားလုံးသည် "မှားယွင်းသောတန်ဖိုးများ" အဖြစ်သတ်မှတ်သည်

အချည်းနှီးသောကြိုးများကိုလျစ်လျူရှုထားပါ။ 0 နှင့် Null အားလုံးသည် "မှားယွင်းသောတန်ဖိုးများ" အဖြစ်သတ်မှတ်သည်

M66 2025-06-05

PHP တွင် array_filter သည် callback function ၏ပြန်လာရလဒ်ပေါ် အခြေခံ. Arrays များကို filter လုပ်ရန်အလွန်လက်တွေ့လုပ်ဆောင်ချက်ဖြစ်သည်။ ပုံမှန်အားဖြင့် callback function ကိုမပေးလျှင် array_filter က "အတုအယောင်တန်ဖိုးများ" ဟုမှတ်ယူထားသည်။ ဤ "မှားယွင်းသောတန်ဖိုးများ" တွင် -

  • မှားသော

  • တရားစွာလဲှ

  • 0 (ကိန်းဂဏန်း)

  • '0' (string)

  • '' (အချည်းနှီးသော string ကို)

  • [] (အချည်းနှီးသောခင်းကျင်း)

၎င်းသည် developer အချို့ကိုရှုပ်ထွေးစေ နိုင်သည် ဒီတော့ဘာဖြစ်လို့ဒီလိုဖြစ်ရတာလဲ။ နက်ရှိုင်းတဲ့ကြည့်ကြည့်ရအောင်။

PHP တွင် "မှားယွင်းသောတန်ဖိုး" ဟူသောအယူအဆ

PHP သည်အားနည်းသောဘာသာစကားဖြစ်ပြီး၎င်းသည် boolean စစ်ဆင်ရေးတစ်ခုပြုလုပ်သောအခါ၎င်းသည်အချို့သောအမျိုးအစားများကို boolean တန်ဖိုးများသို့အလိုအလျောက်ပြောင်းလဲပေးသည်။ ဤယန္တရားကို type juggling ဟုခေါ်သည်။ Boolean အခြေအနေတွင်အောက်ပါတန်ဖိုးများကို မှားယွင်းစွာ ဖော်ပြထားသည်။

 var_dump((bool) false);   // false
var_dump((bool) null);    // false
var_dump((bool) 0);       // false
var_dump((bool) '0');     // false
var_dump((bool) '');      // false
var_dump((bool) []);      // false

တန်ဖိုးတစ်ခု boolean type နှင့် false သို့ကူးပြောင်းသည်အတိုင်း array_filter သည် ပုံမှန်အားဖြင့်၎င်းကို filter လိမ့်မည်။

array_filter ၏ပုံမှန်အပြုအမူ

array_filter function ရှေ့ပြေးပုံစံသည်အောက်ပါအတိုင်းဖြစ်သည် -

 array_filter(array $array, ?callable $callback = null, int $mode = 0): array

ဒုတိယ parameter သည် $ callback သည် Null ဖြစ်သည့်အခါ array_filter သည် အောက်ပါအတိုင်းဖြစ်သည် -

 $result = [];
foreach ($array as $key => $value) {
    if ((bool) $value) {
        $result[$key] = $value;
    }
}

ဥပမာအားဖြင့်:

 $data = [0, 1, 2, null, '', 'hello', false];

$result = array_filter($data);

// ဝင်သည် [1 => 1, 2 => 2, 5 => 'hello']

သင်မြင်နိုင်သည့်အတိုင်း 0 င် Null '' နှင့် မှားယွင်းသောအယူမှား များမှာ "အတုအယောင်" ဟုသတ်မှတ်ပြီးထို့ကြောင့်ဖယ်ရှားပစ်လိုက်ခြင်းဖြစ်သည်။

တိကျတဲ့အမျိုးအစားတစ်ခု၏တန်ဖိုးများကိုထုတ်ဝြေမနပ်ဖြစ်နည်း?

အကယ်. သင်သည် Null တန်ဖိုးများကိုထုတ်ယူလိုပါက 0 နှင့်အချည်းနှီးသောကြိုးများကိုသိမ်းထားလိုပါကဥပမာအားဖြင့် Callback function ကိုသင်ဖြတ်သွားနိုင်သည်။

 $data = [0, '0', '', null, false, 'PHP'];

$result = array_filter($data, function ($item) {
    return !is_null($item);
});

// စောင့်ရှောက်ပါ 0、'0' နှင့် ''

ဥပမာအားဖြင့်, သင်သည်အချည်းနှီးသောကြိုးများကိုဖယ်ရှားလိုပါက:

 $result = array_filter($data, function ($item) {
    return $item !== '';
});

၎င်းသည်သင့်အားအထူးလိုအပ်ချက်များနှင့်အညီထိန်းသိမ်းထားရန်လိုအပ်သည်ကိုဂရုတစိုက်ထိန်းချုပ်ရန်ခွင့်ပြုသည်။

လက်တွေ့ကျတဲ့ဇာတ်လမ်းတစ်ပုဒ်၏ဥပမာတစ်ခု

သင်ပုံစံတင်သွင်းမှုစနစ်တစ်ခုကိုတည်ဆောက်နေသည်ဆိုပါစို့။ ရှေ့ဆုံးပုံစံသည်အချည်းနှီးသောနယ်ပယ်အချို့ကိုပြန်ပို့နိုင်သည်ဆိုပါစို့။

 $formData = [
    'name' => 'Alice',
    'email' => '',
    'age' => 0,
    'website' => null,
];

$filtered = array_filter($formData, function ($value) {
    return $value !== '' && !is_null($value);
});

print_r($filtered);

ရလဒ်ရလဒ် -

 Array
(
    [name] => Alice
    [age] => 0
)

ဤရလဒ်တွင်အချည်းနှီးသော string ကိုနှင့် null ဖယ်ရှားပစ်လိုက်ပြီး 0 ကို ထိန်းသိမ်းထားသည်။

အကျဉ်းချုပ်

array_fileter ကို သုံးသောအခါ PHP တွင် "မှားယွင်းသောတန်ဖိုးများ" ဟူသောအယူအဆကိုနားလည်ရန်အလွန်အရေးကြီးသည်။ ပုံမှန်အားဖြင့်၎င်းသည် Boolean Fust နှင့်ညီမျှသောတန်ဖိုးများအားလုံးကိုဖယ်ရှားပေးသည် သင်ပိုမိုတိကျသောစစ်ထုတ်ခြင်းအပြုအမူများကိုလိုအပ်ပါကစိတ်ကြိုက် callback function ကိုအမြဲတမ်းဖြတ်သန်းရန်အကြံပြုသည်။

ဤနည်းအားဖြင့်မှန်ကန်သောဒေတာများကိုမှားယွင်းစွာဖျက်ခြင်းသည်အသုံးပြုသူဖြည့်စွက်ထားသော "0" တန်ဖိုးကဲ့သို့မတော်တဆဖျက်ခြင်းကိုရှောင်ရှားနိုင်သည်။