Emprestou a lógica de underscore.JS _.reject e criou duas funções (as pessoas preferem funções !!)
array_reject_value: Esta função está simplesmente rejeitando o valor especificado (também funciona para 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: Esta função está simplesmente rejeitando o método que pode ser chamado (funciona para 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;
}
Portanto, em nosso exemplo atual, podemos usar as funções acima, da seguinte maneira:
$messages = [312, 401, 1599, 3, 6];
$messages = array_reject_value($messages, 401);
ou ainda melhor: (como isso nos dá uma sintaxe melhor para usar como a matriz array_filter )
$messages = [312, 401, 1599, 3, 6];
$messages = array_reject($messages, function ($value) {
return $value === 401;
});
O exemplo acima pode ser usado para coisas mais complicadas, como, digamos, que gostaríamos de remover todos os valores maiores ou iguais a 401. Podemos simplesmente fazer o seguinte:
$messages = [312, 401, 1599, 3, 6];
$greaterOrEqualThan = 401;
$messages = array_reject($messages, function ($value) use $greaterOrEqualThan {
return $value >= $greaterOrEqualThan;
});