PHP တွင် array_filter () function ကို callback function ကိုအားဖြင့် array တစ်ခုရှိ element များကို filter လုပ်ရန်အသုံးပြုသည်။ ဆိုလိုသည်မှာ၎င်းသည်ခင်းကျင်းထားသည့်စည်းမျဉ်းမှတဆင့်ခင်းကျင်းခြင်း, အချို့သောအခြေအနေများတွင်ကျွန်ုပ်တို့သည်စစ်ထုတ်ခြင်းအခြေအနေများကိုကွဲပြားခြားနားသောလိုအပ်ချက်နှင့်အညီပြောင်းလွယ်ပြင်လွယ်ညှိရန်လိုကောင်းလိုပေမည်။
ပထမ ဦး စွာ array_filter ၏အခြေခံအသုံးပြုမှုကိုပြန်လည်သုံးသပ်ကြပါစို့။ ကျွန်ုပ်တို့တွင်ရိုးရှင်းသောခင်းကျင်းမှုရှိပြီး၎င်းတွင်နံပါတ်များကိုပင်စစ်ထုတ်လိုသည်ဆိုပါစို့။
<?php
$array = [1, 2, 3, 4, 5, 6];
$filtered = array_filter($array, function($item) {
return $item % 2 !== 0; // ထူးဆန်းနံပါတ်များကိုသာထိန်းသိမ်းထားသည်
});
print_r($filtered);
?>
ရလဒ်များအစက်အပြောက်:
Array
(
[0] => 1
[2] => 3
[4] => 5
)
ဤဥပမာတွင်ကျွန်ုပ်တို့သည် callback function မှတဆင့်စစ်ထုတ်ခြင်းစည်းမျဉ်းကိုသတ်မှတ်သည်။ သို့သော်လက်တွေ့ကျသောအပလီကေးရှင်းများတွင်အချို့သော filtering စည်းမျဉ်းမျိုးရှိနိုင်သဖြင့်ကျွန်ုပ်တို့သည် callback လုပ်ဆောင်ချက်အသစ်များရေးသားခြင်းအစား filtering စည်းမျဉ်းများကိုပြောင်းလွယ်ပြင်လွယ်များကိုရွေးချယ်နိုင်လိမ့်မည်။
စစ်စည်းမျဉ်းများကိုပိုမိုပြောင်းလွယ်ပြင်လွယ်စေရန်အတွက်ကျွန်ုပ်တို့သည်စီစစ်ခြင်းဆိုင်ရာစည်းမျဉ်းများကိုပိုမိုလွယ်ကူစွာပြုလုပ်နိုင်သည်။ အကောင်အထည်ဖော်ရန်အတွက်သော့ချက်သည် filtering rule ကို parray_filter () အတွက် parameter အဖြစ်သတ်မှတ်ရန်ဖြစ်သည်။
ကွဲပြားခြားနားသောအခြေအနေများတွင်ကွဲပြားခြားနားသောအခြေအနေများတွင်ဟုခေါ်သော filtering စည်းမျဉ်းများကို fulations သို့မဟုတ် classes များသို့စီစစ်ခြင်းများကို encapsate လုပ်နိုင်သည်။
<?php
function filterArray(array $array, callable $filterFunction): array {
return array_filter($array, $filterFunction);
}
// ကွဲပြားခြားနားသော filtering စည်းမျဉ်းစည်းကမ်းတွေကိုသတ်မှတ်
$isOdd = function($item) {
return $item % 2 !== 0; // ထူးဆန်းနံပါတ်များကိုသာထိန်းသိမ်းထားသည်
};
$isEven = function($item) {
return $item % 2 === 0; // ပင်နံပါတ်များကိုသာထိန်းသိမ်းထားကြသည်
};
$array = [1, 2, 3, 4, 5, 6];
// ကွဲပြားခြားနားသော filtering စည်းမျဉ်းများကိုသုံးပါ
$filteredOdd = filterArray($array, $isOdd);
$filteredEven = filterArray($array, $isEven);
print_r($filteredOdd); // ထူးဆန်းနံပါတ်များကိုသာထိန်းသိမ်းထားသည်
print_r($filteredEven); // ပင်နံပါတ်များကိုသာထိန်းသိမ်းထားကြသည်
?>
ရလဒ်ရလဒ် -
Array
(
[0] => 1
[2] => 3
[4] => 5
)
Array
(
[1] => 2
[3] => 4
[5] => 6
)
အပေါ်ကဥပမာမှာ filtering စည်းမျဉ်းတွေကို functionray () function parameters တွေကိုဖြတ်သန်းသွားတယ်, ဤနည်းလမ်းသည် code ကိုပိုမိုတိကျပြီးပြန်လည်အသုံးပြုနိုင်သည်။
တခါတရံတွင်ကျွန်ုပ်တို့သည်စီစစ်ခြင်းဆိုင်ရာစည်းမျဉ်းများကိုပြင်ပသွင်းအားစုများမှတစ်ဆင့် (ဥပမာအသုံးပြုသူချိန်ညှိချက်များ, ဤကိစ္စတွင်ကျွန်ုပ်တို့သည်လွန်ကဲသော parameters တွေကို အခြေခံ. သက်ဆိုင်ရာစီစစ်ခြင်းဆိုင်ရာစည်းမျဉ်းများကိုထုတ်ပေးနိုင်သည်။
<?php
function generateFilterRule(string $type): callable {
if ($type === 'odd') {
return function($item) {
return $item % 2 !== 0; // ထူးဆန်းနံပါတ်များကိုသာထိန်းသိမ်းထားသည်
};
} elseif ($type === 'even') {
return function($item) {
return $item % 2 === 0; // ပင်နံပါတ်များကိုသာထိန်းသိမ်းထားကြသည်
};
} else {
return function($item) {
return true; // filtering မရှိပါ
};
}
}
$array = [1, 2, 3, 4, 5, 6];
$filterRule = generateFilterRule('odd'); // ထူးဆန်းသောစည်းမျဉ်းကိုရွေးချယ်ပါ
$filtered = array_filter($array, $filterRule);
print_r($filtered);
?>
ရလဒ်ရလဒ် -
Array
(
[0] => 1
[2] => 3
[4] => 5
)
ဤဥပမာတွင် GeneralFilterrule () function သည် passed string ကို အခြေခံ. စစ်ချိန်ညှိချက်များကိုဆုံးဖြတ်ပြီးစစ်ထုတ်ခြင်းအခြေအနေများကိုပိုမိုပြောင်းလွယ်ပြင်လွယ်စေသည်။
အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်စစ်စည်းမျဉ်းများသည်တစ်ခါတစ်ရံတွင်ပြင်ပဒေတာရင်းမြစ်များပေါ်တွင်သာမှီခိုသည် (ဥပမာဒေတာဘေ့စ်စုံစမ်းမှုရလဒ်များ, API ပြန်လာသောတန်ဖိုးများစသည်) ။ ဤကိစ္စတွင်ကျွန်ုပ်တို့သည်ပြင်ပဒေတာအရင်းအမြစ်များကိုစီစစ်ခြင်းဆိုင်ရာစည်းမျဉ်းများထည့်သွင်းနိုင်သည်။ ဥပမာအားဖြင့်ကျွန်ုပ်တို့သည် M66.net မှရရှိသော configurations အပေါ် အခြေခံ. စစ်ထုတ်မှုများပြုလုပ်နိုင်သည်။
<?php
// ဒီကနေယူဆ m66.net ရရှိသော filter စည်းမျဉ်းပြင်ဆင်ခြင်း
$filterConfig = [
'type' => 'even' // ဒီမှာပြင်ပ interface မှရရှိသောတန်ဖိုးကိုဖြစ်နိုင်သည် 'odd' သို့မဟုတ် 'even'
];
// ပြင်ပဒေတာအရင်းအမြစ်များအပေါ် အခြေခံ. စစ်ဆင်ရေးစည်းမျဉ်းများထုတ်လုပ်ခြင်း
$filterRule = generateFilterRule($filterConfig['type']);
$array = [1, 2, 3, 4, 5, 6];
$filtered = array_filter($array, $filterRule);
print_r($filtered);
?>
ဤနည်းအားဖြင့်ကျွန်ုပ်တို့သည် M66.net ကဲ့သို့သောပြင်ပ interfaces ၏ configurations ၏ configurations ၏ configurations configurations ၏ configurations configurations configurations configurations နှင့်အညီကျွန်ုပ်တို့သည် filtering rules ကိုပြောင်းလဲနိုင်သည်။