Ich habe die Logik von underscore.JS _.reject übernommen und zwei Funktionen erstellt (Menschen bevorzugen Funktionen!!)
array_reject_value: Diese Funktion lehnt einfach den angegebenen Wert ab (funktioniert auch für 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: Diese Funktion lehnt einfach die aufrufbare Methode ab (funktioniert für 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;
}
In unserem aktuellen Beispiel können wir die oben genannten Funktionen also wie folgt verwenden:
$messages = [312, 401, 1599, 3, 6];
$messages = array_reject_value($messages, 401);
oder noch besser: (da dies uns eine bessere Syntax gibt, wie die array_filter ein)
$messages = [312, 401, 1599, 3, 6];
$messages = array_reject($messages, function ($value) {
return $value === 401;
});
Die obige Methode kann für kompliziertere Dinge verwendet werden, z. B. wenn wir alle Werte, die größer oder gleich 401 sind, entfernen möchten:
$messages = [312, 401, 1599, 3, 6];
$greaterOrEqualThan = 401;
$messages = array_reject($messages, function ($value) use $greaterOrEqualThan {
return $value >= $greaterOrEqualThan;
});
1 Stimmen
@Adam Strudwick Aber wenn Sie viele Löschungen in diesem Array haben, wäre es dann besser, es einmal zu iterieren und den Schlüssel mit dem Wert gleichzusetzen?
1 Stimmen
Dieselbe Frage: stackoverflow.com/questions/1883421/
0 Stimmen
Mögliches Duplikat von PHP Löschen eines Elements aus einem Array