Aktueller Standort: Startseite> Neueste Artikel> Wie filtert ich alle Nicht-String-Elemente in einem Array mithilfe von PHPs Array_filter-Funktion?

Wie filtert ich alle Nicht-String-Elemente in einem Array mithilfe von PHPs Array_filter-Funktion?

M66 2025-07-18

In der PHP -Entwicklung begegnen wir häufig auf die Notwendigkeit, bestimmte Arten von Daten aus einer Reihe gemischter Typen herauszufiltern, z. B. das, worüber wir heute sprechen werden:. Zu diesem Zeitpunkt ist Array_filter () nützlich.

Was ist Array_filter () ?

Array_Filter () ist eine der integrierten Array-Funktionen in PHP, die hauptsächlich zum Filtern von Elementen in Arrays verwendet wird. Es akzeptiert ein Array und eine Rückruffunktion (optional), wobei ein neues Array von Elementen zurückgegeben wird, die True zurückgeben.

 array_filter(array $array, ?callable $callback = null, int $mode = 0): array
  • $ Array : Das Array zum Filter.

  • $ Callback : Benutzerdefinierte Funktion zum Testen jedes Elements im Array.

  • $ modus : Optionaler Parameter Um anzugeben, ob der Parameter der Rückruffunktion ein Schlüssel, ein Wert oder beides ist.

Praktische Anwendung: FILTER NICHT-STRANK-Elemente

Hier ist ein Beispielarray mit mehreren Arten von Elementen:

 $data = [
    "apple",
    42,
    "banana",
    true,
    "cherry",
    null,
    3.14,
    ["nested", "array"],
    (object) ["name" => "grape"]
];

Unser Ziel ist es , alle Nicht-String-Werte herauszufiltern und nur Stringelemente zu erhalten .

Methode 1: Verwenden Sie IS_String als Rückruffunktion

 $filtered = array_filter($data, 'is_string');

print_r($filtered);

Ausgangsergebnis:

 Array
(
    [0] => apple
    [2] => banana
    [4] => cherry
)

Beachten Sie, dass Array_Filter () den Schlüsselnamen des ursprünglichen Arrays behält. Wenn Sie möchten, dass sich das Ergebnis um ein redexedes Array handelt, können Sie Array_Values () verwenden:

 $filtered = array_values(array_filter($data, 'is_string'));

Methode 2: Verwenden Sie anonyme Funktionen, um komplexere Urteile zu erhalten

Wenn Sie die Logik erweitern möchten, z. B. nur Strings mit Längen von mehr als 5, können Sie Folgendes schreiben:

 $filtered = array_filter($data, function($item) {
    return is_string($item) && strlen($item) > 5;
});

print_r($filtered);

Echte Szenenanwendung

Nehmen wir an, Sie müssen die vom Benutzer ausgefüllten Zeichenfolge extrahieren, wenn Sie ein Array von Formulardaten verarbeiten:

 $userInput = [
    'username' => 'john_doe',
    'age' => 28,
    'email' => 'john@example.com',
    'newsletter' => true,
    'website' => 'https://m66.net/profile/john'
];

$stringsOnly = array_filter($userInput, 'is_string');

print_r($stringsOnly);

Ausgangsergebnis:

 Array
(
    [username] => john_doe
    [email] => john@example.com
    [website] => https://m66.net/profile/john
)

Auf diese Weise können Sie nur Daten zum Texttyp verarbeiten, z. B. zum Senden von E-Mails oder zum Erstellen von Datenbankabfragen.

Zusammenfassen

Mit Array_Filter () mit is_string () kann alle Stringelemente aus einem gemischten Array sehr bequem herausgefiltert werden. Diese Methode ist einfach und effizient und für die Reinigung und Verarbeitung von Array -Daten in der täglichen PHP -Entwicklung sehr geeignet.