Aktueller Standort: Startseite> Neueste Artikel> Wenn Sie die Rückruffunktion nicht übergeben, denken Sie fälschlicherweise, dass dies das Ergebnis nicht beeinflusst, wenn Sie die Rückruffunktion nicht übergeben?

Wenn Sie die Rückruffunktion nicht übergeben, denken Sie fälschlicherweise, dass dies das Ergebnis nicht beeinflusst, wenn Sie die Rückruffunktion nicht übergeben?

M66 2025-06-04

In der Array -Verarbeitungsfunktion von PHP ist Array_Filter () ein sehr praktisches Instrument, und es ist sein Ziel, "die Kriterien nicht zu erfüllen" Elemente aus dem Array entfernen. Es hat jedoch ein Verhalten, das Anfänger verwirren kann:

Dann lautet die Frage:

Wenn Sie die Rückruffunktion nicht übergeben, wenn Sie Array_filter () verwenden, denken Sie fälschlicherweise, dass sie keinen Einfluss auf das Ergebnis hat?

Lassen Sie uns gemeinsam eingehend analysieren.

Das Standardverhalten von Array_filter

Array_Filter (Array $ Array,? Callable $ callback = null, int $ modus = 0): Der zweite Parameter von Array $ $ Callback ist optional.

Wenn Sie keine Rückruffunktion angeben , verwendet Array_filter () standardmäßig Boolval (), um festzustellen, ob jedes Element "wahr" ist, und zu entscheiden, ob sie basierend darauf beibehalten sollen. Das heißt, es entfernt alle "falschen" Elemente wie:

  • FALSCH

  • 0 (Ganzzahl oder String)

  • NULL

  • Leere Zeichenfolge "" "

  • Leeres Array []

Beispiel 1: Rückruffunktion nicht übergeben

 $data = [0, 1, false, 2, '', 3, null];

$result = array_filter($data);

print_r($result);

Das Ausgangsergebnis ist:

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

Sie werden feststellen, dass 0 , falsch , '' und Null alle herausgefiltert werden.

Beispiel 2: Ich denke fälschlicherweise, dass ich es nicht damit umgehen werde, wenn ich keinen Rückruf bestehe

Viele Anfänger werden denken:

"Wenn ich die Rückruffunktion nicht übergebenin, ist es gleichbedeutend mit nichts, wenn ich nur das ursprüngliche Array zurückgibt."

Aber natürlich ist dies ein Missverständnis. Tatsächlich trägt das Standardverhalten selbst die Filterlogik und basiert auf "booleschen Wahrheit".

Beispiel 3: Definieren Sie die Rückruflogik selbst

Wenn Sie nur den Nullwert herausfiltern und 0 , falsche , leere Zeichenfolgen usw. aufbewahren möchten, können Sie eine Callback -Funktion explizit übergeben:

 $data = [0, 1, false, 2, '', 3, null];

$result = array_filter($data, function($item) {
    return $item !== null;
});

print_r($result);

Ausgangsergebnis:

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

Zu diesem Zeitpunkt wird nur Null gefiltert und andere "falsche Werte" bleiben noch beibehalten.

Zusammenfassung

Ohne eine Rückruffunktion zu übergeben, ist Array_filter () nicht "nicht verarbeitet", sondern standardmäßig alle "falschen Werte" im booleschen Sinne herauszufiltern. Dies ist nützlich, wenn Sie Daten reinigen, kann jedoch leicht zu Missverständnissen führen.

Um logische Verwirrung zu vermeiden, empfehlen wir Ihnen:

  • Identifizieren Sie den spezifischen Inhalt, den Sie filtern möchten.

  • Wenn es eine benutzerdefinierte Logikanforderung gibt, übergeben Sie die Rückruffunktion immer explizit.

  • Achten Sie darauf, den Schlüsselnamen zu behalten (der Schlüsselname des ursprünglichen Arrays wird standardmäßig beibehalten).

Weitere Lesen

Sie können die folgende Seite besuchen, um weitere Beispiele für diese Funktion in der tatsächlichen Anwendung anzuzeigen (der Name des Beispieladressendomänennamens wurde durch m66.net ersetzt):