1169 Stimmen

PHP Array löschen nach Wert (nicht Schlüssel)

Ich habe ein PHP-Array wie folgt:

$messages = [312, 401, 1599, 3, ...];

Ich möchte das Element löschen, das den Wert $del_val (zum Beispiel, $del_val=401 ), aber ich kenne den Schlüssel nicht. Das könnte helfen: jeder Wert kann nur einmal vorhanden sein .

Ich bin auf der Suche nach der einfachsten Funktion, um diese Aufgabe zu erfüllen, bitte.

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

0 Stimmen

38voto

Roy Punkte 4024

Mit PHP 7.4 unter Verwendung von Pfeilfunktionen:

$messages = array_filter($messages, fn ($m) => $m != $del_val);

Damit es ein nicht-assoziatives Array bleibt, wickeln Sie es mit array_values() :

$messages = array_values(array_filter($messages, fn ($m) => $m != $del_val));

36voto

Airy Punkte 4802

Der beste Weg ist array_splice

array_splice($array, array_search(58, $array ), 1);

Reason for Best ist hier zu finden http://www.programmerinterview.com/index.php/php-questions/how-to-delete-an-element-from-an-array-in-php/

34voto

Victor Priceputu Punkte 626

Oder ganz einfach: manuell:

foreach ($array as $key => $value){
    if ($value == $target_value) {
        unset($array[$key]);
    }
}

Dies ist die sicherste Variante, da Sie die volle Kontrolle über Ihr Array haben.

20voto

tttony Punkte 4001
function array_remove_by_value($array, $value)
{
    return array_values(array_diff($array, array($value)));
}

$array = array(312, 401, 1599, 3);

$newarray = array_remove_by_value($array, 401);

print_r($newarray);

Ausgabe

Array ( [0] => 312 [1] => 1599 [2] => 3 )

15voto

Qurashi Punkte 1429

Können Sie tun:

unset($messages[array_flip($messages)['401']]);

Erläuterung : Löschen des Elements mit dem Schlüssel 401 nachdem das Array umgedreht wurde.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X