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.
<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>
Array (erforderlich)
Dies ist das Array, das Sie den Filtervorgang ausführen möchten.
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.
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.
Hier sind einige übliche Beispiele für Array_filter -Verwendungsnutzung:
<span><span><span class="hljs-meta"><?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">?></span></span><span>
</span></span>
Ausgabe:
<span><span>Array
(
[</span><span><span class="hljs-meta">1</span></span><span>] => </span><span><span class="hljs-number">1</span></span><span>
[</span><span><span class="hljs-meta">3</span></span><span>] => </span><span><span class="hljs-number">2</span></span><span>
[</span><span><span class="hljs-meta">5</span></span><span>] => </span><span><span class="hljs-number">3</span></span><span>
[</span><span><span class="hljs-meta">6</span></span><span>] => apple
[</span><span><span class="hljs-meta">8</span></span><span>] => </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.
<span><span><span class="hljs-meta"><?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">?></span></span><span>
</span></span>
Ausgabe:
<span><span>Array
(
[</span><span><span class="hljs-meta">1</span></span><span>] => </span><span><span class="hljs-number">2</span></span><span>
[</span><span><span class="hljs-meta">3</span></span><span>] => </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.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$arr</span></span><span> = [
</span><span><span class="hljs-string">'first'</span></span><span> => </span><span><span class="hljs-number">1</span></span><span>,
</span><span><span class="hljs-string">'second'</span></span><span> => </span><span><span class="hljs-number">2</span></span><span>,
</span><span><span class="hljs-string">'third'</span></span><span> => </span><span><span class="hljs-number">3</span></span><span>,
</span><span><span class="hljs-string">'fourth'</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>, 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">?></span></span><span>
</span></span>
Ausgabe:
<span><span>Array
(
[</span><span><span class="hljs-meta">third</span></span><span>] => </span><span><span class="hljs-number">3</span></span><span>
[</span><span><span class="hljs-meta">fourth</span></span><span>] => </span><span><span class="hljs-number">4</span></span><span>
)
</span></span>
In diesem Beispiel wird gezeigt, wie man basierend auf Array -Tasten filtert.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$arr</span></span><span> = [
</span><span><span class="hljs-string">'apple'</span></span><span> => </span><span><span class="hljs-number">5</span></span><span>,
</span><span><span class="hljs-string">'banana'</span></span><span> => </span><span><span class="hljs-number">0</span></span><span>,
</span><span><span class="hljs-string">'orange'</span></span><span> => </span><span><span class="hljs-number">2</span></span><span>,
</span><span><span class="hljs-string">'grape'</span></span><span> => </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> > </span><span><span class="hljs-number">1</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">'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">?></span></span><span>
</span></span>
Ausgabe:
<span><span>Array
(
[</span><span><span class="hljs-meta">apple</span></span><span>] => </span><span><span class="hljs-number">5</span></span><span>
[</span><span><span class="hljs-meta">orange</span></span><span>] => </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.
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.
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.
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.
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.
Verwandte Tags:
array_filter