Heim >Backend-Entwicklung >PHP-Problem >So löschen Sie mehrere Subarrays in einem zweidimensionalen Array in PHP

So löschen Sie mehrere Subarrays in einem zweidimensionalen Array in PHP

PHPz
PHPzOriginal
2023-04-18 10:26:08550Durchsuche

In PHP müssen wir manchmal mehrere Arrays aus einem zweidimensionalen Array löschen. Diese Anforderung kommt relativ häufig vor. Beispielsweise müssen wir bestimmte Daten ignorieren oder einige Daten aus dem Originaldatensatz herausfiltern, die die Anforderungen nicht erfüllen. In diesem Artikel wird erläutert, wie Sie mithilfe der in PHP integrierten Funktionen und benutzerdefinierten Funktionen einige Arrays in einem zweidimensionalen Array löschen.

1. Die in PHP integrierte Funktion array_filter() löscht mehrere Arrays in einem zweidimensionalen Array.

Die in PHP integrierte Funktion array_filter() kann bestimmte Elemente in einem Array herausfiltern und ein neues Array zurückgeben. Wenn wir mehrere Arrays in einem zweidimensionalen Array löschen, können wir dies mit dieser Funktion erreichen. Hier ist ein Beispiel:

$array = [
    ['id' => 1, 'name' => 'Alice', 'gender' => 'female'],
    ['id' => 2, 'name' => 'Bob', 'gender' => 'male'],
    ['id' => 3, 'name' => 'Charlie', 'gender' => 'male'],
    ['id' => 4, 'name' => 'David', 'gender' => 'male']
];

$exclude_ids = [2, 3];

$new_array = array_filter($array, function($item) use ($exclude_ids) {
    return !in_array($item['id'], $exclude_ids);
});

print_r($new_array);

In diesem Beispiel haben wir ein zweidimensionales Array $array, das 4 Unterarrays enthält, und wir möchten die Unterarrays mit den IDs 2 und 3 daraus löschen. Wir definieren das Array $exclude_ids so, dass es die ID-Werte enthält, die gelöscht werden müssen. Dann verwenden wir die Funktion array_filter() und übergeben sie an eine Abschlussfunktion. Diese Funktion prüft, ob der „id“-Wert im Subarray im Array $exclude_ids enthalten ist, und gibt in diesem Fall „false“ zurück, andernfalls gibt sie „true“ zurück. Darüber hinaus verwenden wir auch die use-Anweisung, damit die Abschlussfunktion auf das Array $exclude_ids zugreifen kann. Schließlich erhalten wir ein neues Array, das nur die Unterarrays mit anderen „id“-Werten als 2 und 3 enthält.

2. Benutzerdefinierte Funktion zum Löschen mehrerer Arrays in einem zweidimensionalen Array

Zusätzlich zur Verwendung integrierter Funktionen können wir auch unsere eigenen Funktionen schreiben, um mehrere Arrays in einem zweidimensionalen Array zu löschen. Dies ermöglicht eine flexiblere Kontrolle über Art und Bedingungen der Löschung. Hier ist ein Beispiel:

function exclude_subarrays($array, $condition) {
    $new_array = [];
    foreach($array as $key => $subarray) {
        $should_exclude = true;
        foreach($condition as $k => $v) {
            if($subarray[$k] !== $v) {
                $should_exclude = false;
                break;
            }
        }
        if(!$should_exclude) {
            $new_array[] = $subarray;
        }
    }
    return $new_array;
}

$array = [
    ['id' => 1, 'name' => 'Alice', 'gender' => 'female'],
    ['id' => 2, 'name' => 'Bob', 'gender' => 'male'],
    ['id' => 3, 'name' => 'Charlie', 'gender' => 'male'],
    ['id' => 4, 'name' => 'David', 'gender' => 'male']
];

$exclude_condition = ['id' => 2, 'gender' => 'male'];

$new_array = exclude_subarrays($array, $exclude_condition);

print_r($new_array);

In diesem Beispiel haben wir auch ein zweidimensionales Array $array, das 4 Unterarrays enthält, und wir müssen das Unterarray mit der ID 2 und dem Geschlecht männlich löschen. Um diese Aufgabe zu erfüllen, haben wir eine Funktion namens „exclude_subarrays“ geschrieben. Diese Funktion akzeptiert zwei Parameter: das ursprüngliche Array „$array“ und ein assoziatives Array „$condition“, das die Löschbedingung enthält. Innerhalb der Funktion erstellen wir ein leeres neues Array $new_array und verwenden dann foreach, um alle Unterarrays im ursprünglichen Array zu durchlaufen. Für jedes Subarray definieren wir ein $should_exclude-Flag, das bei der Initialisierung auf true gesetzt wird. Wir verwenden auch foreach, um jedes Schlüssel-Wert-Paar in der Bedingung $condition zu durchlaufen und zu löschen. Für jedes Schlüssel-Wert-Paar prüfen wir, ob der entsprechende Schlüssel im aktuellen Subarray gleich dem erforderlichen Wert ist. Wenn gleich, bedeutet dies, dass dieses Unterarray gelöscht werden sollte. Setzen Sie daher das Flag $should_exclude auf false und verlassen Sie die Schleife. Andernfalls fahren Sie mit der Prüfung des nächsten Schlüssel-Wert-Paares fort. Wenn $should_exclude nach Abschluss der Prüfung des gesamten $condition-Arrays immer noch wahr ist, bedeutet dies, dass das aktuelle Unterarray nicht gelöscht werden muss und daher dem $new_array-Array hinzugefügt wird. Zum Schluss geben Sie einfach das neue Array zurück.

Zusammenfassung

Die oben genannten sind zwei Möglichkeiten, mehrere Arrays in einem zweidimensionalen Array zu löschen. Obwohl die integrierte Funktion array_filter() kürzer ist, ist die benutzerdefinierte Funktion flexibler und in bestimmten Situationen möglicherweise besser geeignet. Bei der Nutzung sollten Sie je nach tatsächlicher Situation flexibel wählen.

Das obige ist der detaillierte Inhalt vonSo löschen Sie mehrere Subarrays in einem zweidimensionalen Array in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn