PHP တွင် array_filter သည် callback function ၏ပြန်လာရလဒ်ပေါ် အခြေခံ. Arrays များကို filter လုပ်ရန်အလွန်လက်တွေ့လုပ်ဆောင်ချက်ဖြစ်သည်။ ပုံမှန်အားဖြင့် callback function ကိုမပေးလျှင် array_filter က "အတုအယောင်တန်ဖိုးများ" ဟုမှတ်ယူထားသည်။ ဤ "မှားယွင်းသောတန်ဖိုးများ" တွင် -
မှားသော
တရားစွာလဲှ
0 (ကိန်းဂဏန်း)
'0' (string)
'' (အချည်းနှီးသော string ကို)
[] (အချည်းနှီးသောခင်းကျင်း)
၎င်းသည် developer အချို့ကိုရှုပ်ထွေးစေ နိုင်သည် ။ ဒီတော့ဘာဖြစ်လို့ဒီလိုဖြစ်ရတာလဲ။ နက်ရှိုင်းတဲ့ကြည့်ကြည့်ရအောင်။
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 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" တန်ဖိုးကဲ့သို့မတော်တဆဖျက်ခြင်းကိုရှောင်ရှားနိုင်သည်။