Aktueller Standort: Startseite> Neueste Artikel> Wie kann ich eine gemeinsame benutzerdefinierte Funktion in die Implementierung von PHP -Logik von Array_filter () in die Implementierung des PHP -Implementierens integrieren?

Wie kann ich eine gemeinsame benutzerdefinierte Funktion in die Implementierung von PHP -Logik von Array_filter () in die Implementierung des PHP -Implementierens integrieren?

M66 2025-06-15

In PHP ist Array_Filter () eine sehr häufige integrierte Funktion, mit der Elemente in einem Array durch eine Rückruffunktion gefiltert werden. Es gibt ein neues Array zurück, das Elemente enthält, die durch die Rückruffunktion für true validiert werden. Während Array_Filter () selbst bereits sehr bequem ist, müssen Sie in einigen Fällen möglicherweise für eine größere Flexibilität zusammengefasst oder zusätzliche Logik hinzufügen.

In diesem Artikel wird gezeigt, wie eine gemeinsame benutzerdefinierte Funktion zusammenfasst, das Verhalten von Array_Filter () nachahmt und einige zusätzliche Funktionen darin implementiert.

1. Überprüfung der Grundnutzung von Array_Filter ()

Lassen Sie uns zunächst kurz die Grundnutzung der Funktion array_filter () überprüfen.

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

$result = array_filter($array, function($value) {
    return $value % 2 == 0;  // Nur sogar Zahlen bleiben beibehalten
});

print_r($result);
?>

Das Ausgangsergebnis ist:

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

Im obigen Code gibt die Funktion array_filter () ein neues Array zurück, das nur Zahlen enthält.

2. Implementierung für benutzerdefinierte Einkapselungsfunktion

Als nächstes möchten wir eine Funktion namens Custom_array_filter () zusammenfassen, die die Funktionalität von Array_filter () nachahmt und gleichzeitig zusätzliche Flexibilität liefert.

 <?php
/**
 * Benutzerdefinierte eingekapselt array_filter() Funktion
 *
 * @param array $array Arrays, die gefiltert werden sollen
 * @param callable $callback 回调Funktion
 * @param bool $preserve_keys Ob Sie die Schlüssel des ursprünglichen Arrays behalten sollen
 * @return array Gibt das gefilterte Array zurück
 */
function custom_array_filter(array $array, callable $callback, bool $preserve_keys = true): array
{
    $filtered_array = [];
    
    foreach ($array as $key => $value) {
        if ($callback($value)) {
            if ($preserve_keys) {
                $filtered_array[$key] = $value;
            } else {
                $filtered_array[] = $value;
            }
        }
    }
    
    return $filtered_array;
}

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

// 使用自定义Funktion过滤偶数
$result = custom_array_filter($array, function($value) {
    return $value % 2 == 0;
});

print_r($result);
?>

In diesem Beispiel akzeptiert die Funktion custom_array_filter () drei Parameter:

  1. $ Array : Ein Array, das gefiltert werden soll.

  2. $ Callback : Eine Rückruffunktion, die feststellt, welche Elemente beibehalten werden sollen.

  3. $ PREERIVE_KEYS : Ein optionaler boolescher Wert, der feststellt, ob der Schlüssel des ursprünglichen Arrays erhalten bleibt. Wenn sie auf True gesetzt sind, werden die Schlüssel des ursprünglichen Arrays beibehalten, andernfalls wird das Array wieder indexiert.

Durch das Ausführen des obigen Codes wird die gleiche Ausgabe wie Array_filter () erhalten, die die gleichmäßige Nummer behält und ein neues Array zurückgibt.

3. Implementieren Sie URL -Ersatzfunktion

Angenommen, wir müssen die URLs im Array während der Filterung des Arrays verarbeiten und alle URL -Domänen durch m66.net ersetzen. Wir können diese Funktion in der Rückruffunktion implementieren.

 <?php
function custom_array_filter_with_url(array $array, callable $callback, bool $preserve_keys = true): array
{
    $filtered_array = [];
    
    foreach ($array as $key => $value) {
        // Überprüfen Sie, ob es ist URL,Wenn ja, ersetzen Sie den Domänennamen
        if (filter_var($value, FILTER_VALIDATE_URL)) {
            $parsed_url = parse_url($value);
            $value = str_replace($parsed_url['host'], 'm66.net', $value);
        }
        
        if ($callback($value)) {
            if ($preserve_keys) {
                $filtered_array[$key] = $value;
            } else {
                $filtered_array[] = $value;
            }
        }
    }
    
    return $filtered_array;
}

$array = [
    "https://example.com/page1",
    "https://another-example.com/page2",
    "https://m66.net/somepage"
];

// 使用自定义Funktion,ersetzen URL Der Domain -Name ist m66.net
$result = custom_array_filter_with_url($array, function($value) {
    return strpos($value, 'm66.net') !== false;  // Nur integrieren m66.net von URL
});

print_r($result);
?>

In diesem Beispiel filtert die Funktion custom_array_filter_with_url () nicht nur das Array, sondern auch, ob jeder Wert während des Filterprozesses eine URL ist. Wenn es sich um eine URL handelt, wird der Domain -Name durch m66.net ersetzt. Die Rückruffunktion bestimmt weiterhin, welche Elemente erhalten bleiben sollten.

4. Zusammenfassung

Durch die Einkapselung einer gemeinsamen benutzerdefinierten Funktion können wir die Funktion von Array_filter () flexibler implementieren und gleichzeitig deren Funktionen erweitern. Zum Beispiel können wir den Domänennamen der URL beim Filtern eines Arrays dynamisch ändern oder eine andere benutzerdefinierte Logik hinzufügen. Auf diese Weise können wir allgemeine Array -Filterfunktionen in wiederverwendbaren Code einschränken und den Entwicklungsprozess vereinfachen.