Aktueller Standort: Startseite> Neueste Artikel> Parametrisiere die Filterregeln von array_filter () für unterschiedliche Szenarien

Parametrisiere die Filterregeln von array_filter () für unterschiedliche Szenarien

M66 2025-06-03

In PHP wird die Funktion array_filter () verwendet, um Elemente in einem Array durch eine Rückruffunktion zu filtern. Dies bedeutet, dass es das Array durch die angegebene Regel filtert und Elemente hinterlässt, die der Regel entsprechen. In einigen Szenarien müssen wir möglicherweise die Filterbedingungen entsprechend den unterschiedlichen Bedürfnissen flexibel anpassen. Daher wird es sehr wichtig, die Filterregeln so zu parametriieren, dass sie wiederverwendet und in verschiedenen Szenarien angepasst werden können.

1. Grundnutzung von Array_Filter ()

Lassen Sie uns zunächst die grundlegende Verwendung von Array_filter () überprüfen. Angenommen, wir haben ein einfaches Array und möchten selbst Zahlen herausfiltern:

 <?php
$array = [1, 2, 3, 4, 5, 6];
$filtered = array_filter($array, function($item) {
    return $item % 2 !== 0; // Nur ungerade Zahlen bleiben erhalten
});
print_r($filtered);
?>

Auslaufergebnisse:

 Array
(
    [0] => 1
    [2] => 3
    [4] => 5
)

In diesem Beispiel definieren wir eine Filterregel über die Rückruffunktion - nur ungerade Zahlen bleiben beibehalten. In praktischen Anwendungen gibt es jedoch möglicherweise mehrere verschiedene Filterregeln, und wir möchten in der Lage sein, flexibel Filterregeln zu wählen, anstatt jedes Mal neue Rückruffunktionen zu schreiben.

2. Parametrisierte Filterregeln

Um die Filterregeln flexibler zu gestalten, können wir die Filterregeln parametrisieren, damit unterschiedliche Filterbedingungen gemäß den Anforderungen in verschiedenen Szenarien ausgewählt werden können. Der Schlüssel zur Implementierung besteht darin, die Filterregel als Parameter an Array_filter () zu übergeben.

Beispiel: Wählen Sie die Filterregeln basierend auf den Bedingungen aus

Wir können die Filterregeln in Funktionen oder Klassen einschließen, damit verschiedene Regeln in verschiedenen Szenarien aufgerufen werden.

 <?php
function filterArray(array $array, callable $filterFunction): array {
    return array_filter($array, $filterFunction);
}

// Definieren Sie verschiedene Filterregeln
$isOdd = function($item) {
    return $item % 2 !== 0; // Nur ungerade Zahlen bleiben erhalten
};

$isEven = function($item) {
    return $item % 2 === 0; // Nur sogar Zahlen bleiben beibehalten
};

$array = [1, 2, 3, 4, 5, 6];

// Verwenden Sie unterschiedliche Filterregeln
$filteredOdd = filterArray($array, $isOdd);
$filteredEven = filterArray($array, $isEven);

print_r($filteredOdd); // Nur ungerade Zahlen bleiben erhalten
print_r($filteredEven); // Nur sogar Zahlen bleiben beibehalten
?>

Ausgangsergebnis:

 Array
(
    [0] => 1
    [2] => 3
    [4] => 5
)
Array
(
    [1] => 2
    [3] => 4
    [5] => 6
)

Im obigen Beispiel übergeben wir die Filterregeln an filterArray () über Funktionsparameter, damit verschiedene Regeln in verschiedenen Szenarien flexibel ausgewählt werden können. Diese Methode macht den Code prägnanter und wiederverwendbarer.

Beispiel: Generieren Sie Filterregeln basierend auf eingehenden Parametern

Manchmal möchten wir die Filterregeln möglicherweise über einige externe Eingänge dynamisch festlegen (wie Benutzereinstellungen, Konfigurationsdateien usw.). In diesem Fall können wir entsprechende Filterregeln basierend auf den bestandenen Parametern erstellen.

 <?php
function generateFilterRule(string $type): callable {
    if ($type === 'odd') {
        return function($item) {
            return $item % 2 !== 0; // Nur ungerade Zahlen bleiben erhalten
        };
    } elseif ($type === 'even') {
        return function($item) {
            return $item % 2 === 0; // Nur sogar Zahlen bleiben beibehalten
        };
    } else {
        return function($item) {
            return true; // Keine Filterung
        };
    }
}

$array = [1, 2, 3, 4, 5, 6];

$filterRule = generateFilterRule('odd'); // Wählen Sie ungerade Regel
$filtered = array_filter($array, $filterRule);
print_r($filtered);
?>

Ausgangsergebnis:

 Array
(
    [0] => 1
    [2] => 3
    [4] => 5
)

In diesem Beispiel bestimmt die Funktion "GenerateFilterRule ()) die Filterregeln basierend auf der bestandenen Zeichenfolge, wodurch die Filterbedingungen flexibler werden.

3.. Erweiterte Anwendungen: Integrieren Sie externe Datenquellen

In der tatsächlichen Entwicklung beruhen die Filterregeln manchmal auf externe Datenquellen (z. B. Datenbankabfrageergebnisse, API -Rückgabewerte usw.). In diesem Fall können wir externe Datenquellen in die Filterregeln einbeziehen. Zum Beispiel können wir dynamisch Filterregeln basierend auf der von M66.NET erhaltenen Konfiguration generieren.

 <?php
// Angenommen, dies ist von m66.net Filterregel -Konfiguration erhalten
$filterConfig = [
    'type' => 'even' // Der von der externe Grenzfläche hier erhaltene Wert kann sein 'odd' oder 'even'
];

// Generieren Sie Filterregeln basierend auf externen Datenquellen
$filterRule = generateFilterRule($filterConfig['type']);

$array = [1, 2, 3, 4, 5, 6];

$filtered = array_filter($array, $filterRule);
print_r($filtered);
?>

Auf diese Weise können wir die Filterregeln dynamisch entsprechend der Konfiguration externer Schnittstellen wie M66.NET anpassen, damit sich der Code an unterschiedliche Anforderungen anpassen kann.

abschließend