Meminjam logika underscore.JS _.reject dan membuat dua fungsi (orang lebih suka fungsi !!)
array_reject_value: Fungsi ini hanya menolak nilai yang ditentukan (juga berfungsi untuk 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: Fungsi ini hanya menolak metode yang dapat dipanggil (berfungsi untuk 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;
}
Jadi, dalam contoh kita saat ini, kita dapat menggunakan fungsi di atas sebagai berikut:
$messages = [312, 401, 1599, 3, 6];
$messages = array_reject_value($messages, 401);
atau bahkan lebih baik: (karena ini memberi kita sintaks yang lebih baik untuk digunakan seperti array_filter )
$messages = [312, 401, 1599, 3, 6];
$messages = array_reject($messages, function ($value) {
return $value === 401;
});
Di atas dapat digunakan untuk hal-hal yang lebih rumit seperti katakanlah kami ingin menghapus semua nilai yang lebih besar atau sama dengan 401, kami cukup melakukan ini:
$messages = [312, 401, 1599, 3, 6];
$greaterOrEqualThan = 401;
$messages = array_reject($messages, function ($value) use $greaterOrEqualThan {
return $value >= $greaterOrEqualThan;
});