ยืมตรรกะของขีดล่าง JS _.reject และสร้างสองฟังก์ชั่น (คนชอบฟังก์ชั่น !!)
array_reject_value:ฟังก์ชั่นนี้เป็นเพียงการปฏิเสธค่าที่ระบุ (ใช้งานได้กับ PHP4,5,7)
function array_reject_value(array &$arrayToFilter, $deleteValue) {
$filteredArray = array();
foreach ($arrayToFilter as $key => $value) {
if ($value !== $deleteValue) {
$filteredArray[] = $value;
}
}
return $filteredArray;
}
array_reject:ฟังก์ชั่นนี้เป็นเพียงการปฏิเสธวิธีการโทร (ทำงานได้กับ PHP> = 5.3)
function array_reject(array &$arrayToFilter, callable $rejectCallback) {
$filteredArray = array();
foreach ($arrayToFilter as $key => $value) {
if (!$rejectCallback($value, $key)) {
$filteredArray[] = $value;
}
}
return $filteredArray;
}
ดังนั้นในตัวอย่างปัจจุบันของเราเราสามารถใช้ฟังก์ชั่นด้านบนดังนี้:
$messages = [312, 401, 1599, 3, 6];
$messages = array_reject_value($messages, 401);
หรือดียิ่งขึ้น: (เพราะนี่จะทำให้เรามีไวยากรณ์ที่ดีกว่าในการใช้เช่นarray_filterหนึ่ง)
$messages = [312, 401, 1599, 3, 6];
$messages = array_reject($messages, function ($value) {
return $value === 401;
});
ด้านบนสามารถใช้สำหรับสิ่งที่ซับซ้อนมากขึ้นเช่นสมมติว่าเราต้องการลบค่าทั้งหมดที่มากกว่าหรือเท่ากับ 401 เราสามารถทำได้ดังนี้:
$messages = [312, 401, 1599, 3, 6];
$greaterOrEqualThan = 401;
$messages = array_reject($messages, function ($value) use $greaterOrEqualThan {
return $value >= $greaterOrEqualThan;
});