Aktueller Standort: Startseite> Neueste Artikel> Was sind die grundlegenden Verwendung und Parameter der Funktion array_filter? Detaillierte Analyse zur korrekten Verwendung von Array_filter

Was sind die grundlegenden Verwendung und Parameter der Funktion array_filter? Detaillierte Analyse zur korrekten Verwendung von Array_filter

gitbox 2025-07-26

In PHP ist die Funktion array_filter ein sehr praktisches Tool, mit dem Elemente in einem Array gefiltert werden und entscheiden, ob das Element auf der Grundlage des von einer bestimmten Rückruffunktion zurückgegebenen booleschen Wertes beibehalten wird. Diese Funktion wird häufig verwendet, um Elemente zu entfernen, die die Kriterien nicht von einem Array erfüllen, oder um Daten basierend auf einer Logik zu extrahieren.

Grundlegende Syntax

 <span><span><span class="hljs-title function_ invoke__">array_filter</span></span><span>(</span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$array</span></span><span>, ?</span><span><span class="hljs-keyword">callable</span></span><span> </span><span><span class="hljs-variable">$callback</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$mode</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>): </span><span><span class="hljs-keyword">array</span></span><span>
</span></span>

Parameterbeschreibung:

  1. Array (erforderlich)
    Dies ist das Array, das Sie den Filtervorgang ausführen möchten.

  2. Rückruf (optional)
    Dies ist eine Rückruffunktion, die feststellt, ob jedes Element des Arrays eine bestimmte Bedingung erfüllt. Wenn dieser Parameter auf NULL eingestellt ist, entfernen Array_filter alle "leeren" Werte im Array, z. B. false , null , 0 , leere Zeichenfolgen usw.

  3. Modus (optional)
    Dies ist eine Konstante, die bestimmt, wie eine Rückruffunktion verwendet wird, um Array -Elemente zu beurteilen. Häufig verwendete Modi sind:

    • Array_filter_use_key : Die Rückruffunktion empfängt die Schlüssel des Arrays anstelle des Wertes.

    • Array_filter_use_both : Die Rückruffunktion empfängt sowohl Schlüssel als auch Werte.

Grundnutzung

Hier sind einige übliche Beispiele für Array_filter -Verwendungsnutzung:

Beispiel 1: Filtern Sie "leere" Werte in Array heraus

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$arr</span></span><span> = [</span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-literal">false</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-literal">null</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-string">'apple'</span></span><span>, </span><span><span class="hljs-string">''</span></span><span>, </span><span><span class="hljs-number">4</span></span><span>];

</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_filter</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

Ausgabe:

 <span><span>Array
(
    [</span><span><span class="hljs-meta">1</span></span><span>] =&gt; </span><span><span class="hljs-number">1</span></span><span>
    [</span><span><span class="hljs-meta">3</span></span><span>] =&gt; </span><span><span class="hljs-number">2</span></span><span>
    [</span><span><span class="hljs-meta">5</span></span><span>] =&gt; </span><span><span class="hljs-number">3</span></span><span>
    [</span><span><span class="hljs-meta">6</span></span><span>] =&gt; apple
    [</span><span><span class="hljs-meta">8</span></span><span>] =&gt; </span><span><span class="hljs-number">4</span></span><span>
)
</span></span>

In diesem Beispiel filtert Array_filter alle "leeren" Werte wie false , null , 0 , leere Zeichenfolgen usw.

Beispiel 2: Filtern Sie ein Array mithilfe einer Rückruffunktion

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$arr</span></span><span> = [</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-number">4</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>];

</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_filter</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>, function(</span><span><span class="hljs-variable">$value</span></span><span>) {
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$value</span></span><span> % </span><span><span class="hljs-number">2</span></span><span> == </span><span><span class="hljs-number">0</span></span><span>; </span><span><span class="hljs-comment">// Nur sogar Zahlen bleiben beibehalten</span></span><span>
});

</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

Ausgabe:

 <span><span>Array
(
    [</span><span><span class="hljs-meta">1</span></span><span>] =&gt; </span><span><span class="hljs-number">2</span></span><span>
    [</span><span><span class="hljs-meta">3</span></span><span>] =&gt; </span><span><span class="hljs-number">4</span></span><span>
)
</span></span>

In diesem Beispiel verwendet Array_filter eine Rückruffunktion, um zu überprüfen, ob jedes Element im Array eine gleichmäßige Nummer ist. Wenn der Rückgabewert wahr ist, wird das Element beibehalten.

Beispiel 3: Verwenden Sie Array_filter_use_key , um nach Schlüssel zu filtern

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$arr</span></span><span> = [
    </span><span><span class="hljs-string">'first'</span></span><span> =&gt; </span><span><span class="hljs-number">1</span></span><span>,
    </span><span><span class="hljs-string">'second'</span></span><span> =&gt; </span><span><span class="hljs-number">2</span></span><span>,
    </span><span><span class="hljs-string">'third'</span></span><span> =&gt; </span><span><span class="hljs-number">3</span></span><span>,
    </span><span><span class="hljs-string">'fourth'</span></span><span> =&gt; </span><span><span class="hljs-number">4</span></span><span>
];

</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_filter</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>, function(</span><span><span class="hljs-variable">$key</span></span><span>) {
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">strpos</span></span><span>(</span><span><span class="hljs-variable">$key</span></span><span>, </span><span><span class="hljs-string">'t'</span></span><span>) === </span><span><span class="hljs-number">0</span></span><span>; </span><span><span class="hljs-comment">// Nur die Schlüssel werden aufbewahrt't'Das Anfangselement</span></span><span>
}, ARRAY_FILTER_USE_KEY);

</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

Ausgabe:

 <span><span>Array
(
    [</span><span><span class="hljs-meta">third</span></span><span>] =&gt; </span><span><span class="hljs-number">3</span></span><span>
    [</span><span><span class="hljs-meta">fourth</span></span><span>] =&gt; </span><span><span class="hljs-number">4</span></span><span>
)
</span></span>

In diesem Beispiel wird gezeigt, wie man basierend auf Array -Tasten filtert.

Beispiel 4: Verwenden Sie Array_Filter_USE_BOTH, um sowohl Schlüssel als auch Werte zu verwenden

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$arr</span></span><span> = [
    </span><span><span class="hljs-string">'apple'</span></span><span> =&gt; </span><span><span class="hljs-number">5</span></span><span>,
    </span><span><span class="hljs-string">'banana'</span></span><span> =&gt; </span><span><span class="hljs-number">0</span></span><span>,
    </span><span><span class="hljs-string">'orange'</span></span><span> =&gt; </span><span><span class="hljs-number">2</span></span><span>,
    </span><span><span class="hljs-string">'grape'</span></span><span> =&gt; </span><span><span class="hljs-number">3</span></span><span>
];

</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_filter</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>, function(</span><span><span class="hljs-variable">$value</span></span><span>, </span><span><span class="hljs-variable">$key</span></span><span>) {
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$value</span></span><span> &gt; </span><span><span class="hljs-number">1</span></span><span> &amp;&amp; </span><span><span class="hljs-title function_ invoke__">strpos</span></span><span>(</span><span><span class="hljs-variable">$key</span></span><span>, </span><span><span class="hljs-string">'a'</span></span><span>) !== </span><span><span class="hljs-literal">false</span></span><span>; </span><span><span class="hljs-comment">// Der reservierte Wert ist größer als1Und der Schlüssel enthält'a'Elemente</span></span><span>
}, ARRAY_FILTER_USE_BOTH);

</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

Ausgabe:

 <span><span>Array
(
    [</span><span><span class="hljs-meta">apple</span></span><span>] =&gt; </span><span><span class="hljs-number">5</span></span><span>
    [</span><span><span class="hljs-meta">orange</span></span><span>] =&gt; </span><span><span class="hljs-number">2</span></span><span>
)
</span></span>

In diesem Beispiel wird array_filter_use_both verwendet, um die Rückruffunktion sowohl mit Schlüssel als auch Werten zu filtern. Das Ergebnis behält Elemente mit einem Wert von mehr als 1 und enthält den Buchstaben 'A' im Schlüssel.

Dinge zu beachten

  1. Der Rückgabewert der Rückruffunktion:
    Der Rückgabewert der Rückruffunktion muss ein boolescher Wert true oder falsch sein. Wenn True zurückgegeben wird, wird das Element beibehalten, und wenn falsch zurückgegeben wird, wird es entfernt.

  2. Leistungsüberlegungen:
    Array_filter durchquert das gesamte Array zum Überprüfen. Wenn das Array sehr groß ist und die Rückruffunktion komplex ist, kann dies die Leistung beeinflussen. Überlegen Sie in diesem Fall, ob die Rückruffunktion optimiert werden kann oder andere Methoden verwendet werden können.

  3. Schlüssel halten:
    Array_Filter hält die Schlüssel des ursprünglichen Arrays beim Filtern. Dies bedeutet, dass, wenn Sie Elemente aus dem Array entfernen, die Schlüssel in dem resultierenden Array nicht wieder integriert werden.

abschließend

Array_filter ist eine sehr leistungsstarke Funktion, mit der Elemente in einem Array basierend auf verschiedenen Bedingungen filterten. Es unterstützt nicht nur grundlegende Filtervorgänge, sondern bietet auch flexible Rückruffunktionen und mehrere Modi, die Ihnen bei der Verarbeitung von Daten effizienter helfen können. Das korrekte Verständnis und die Verwendung von Array_filter kann Ihren Code prägnanter und effizienter machen, insbesondere in Szenarien, in denen groß angelegte Daten behandelt werden oder spezifische Filterbedingungen erforderlich sind.