In PHP ist die Verarbeitung von Arrays eine häufige Aufgabe, insbesondere während der Datenreinigung, Filterung und Konvertierung. Es kann einige Herausforderungen geben, wenn Sie alle Ganzzahlwerte aus einem gemischten Array extrahieren müssen. Glücklicherweise bietet PHP leistungsstarke Tools, die den Prozess sowohl effizient als auch einfach machen. In diesem Artikel wird angezeigt, wie man ganzgängige Ganzzahlen in einem Array durch die Kombination von IS_int- und Array_filter -Funktionen filtert.
Die Funktion array_filter wird verwendet, um über ein Array zu iterieren und eine Rückruffunktion zu verwenden, um zu entscheiden, ob ein Element im Array aufbewahrt werden soll. Seine Syntax ist wie folgt:
<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 : Ausstehend Array.
$ Callback : Eine Rückruffunktion, die Elemente in einem Array filtert. Wenn der Rückruf true zurückgibt, wird das Element beibehalten; Wenn FALSE zurückgegeben wird, wird das Element verworfen.
$ modus : Filtermodus, bestimmt die Parameter der Rückruffunktion.
Wenn der Parameter $ callback nicht übergeben wird, löscht Array_filter die Elemente standardmäßig mit einem Wert von FALSE (einschließlich leerer Zeichenfolgen, 0, Null usw.).
IS_INT ist eine PHP-integrierte Funktion, um zu überprüfen, ob eine Variable eine Ganzzahl ist. Die Syntax ist wie folgt:
<span><span><span class="hljs-title function_ invoke__">is_int</span></span><span>(</span><span><span class="hljs-keyword">mixed</span></span><span> </span><span><span class="hljs-variable">$var</span></span><span>): </span><span><span class="hljs-keyword">bool</span></span><span>
</span></span>
$ var : Die Variable zu überprüfen.
Rückgabewert: Return true , wenn $ var eine Ganzzahl ist; ansonsten false zurückgeben.
Der einfachste Weg, alle Ganzzahlen in einem Array zu filtern, besteht darin, IS_int mit Array_filter zu verwenden. Sie müssen nur eine Rückruffunktion angeben, die is_int aufruft, um zu überprüfen, ob jedes Array -Element eine Ganzzahl ist.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Definieren Sie eine Reihe von gemischten Typen</span></span><span>
</span><span><span class="hljs-variable">$array</span></span><span> = [</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-string">'apple'</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">3.5</span></span><span>, </span><span><span class="hljs-number">4</span></span><span>, </span><span><span class="hljs-string">'banana'</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>, </span><span><span class="hljs-literal">null</span></span><span>];
</span><span><span class="hljs-comment">// verwenden array_filter Und is_int Filtern Sie Ganzzahlen heraus</span></span><span>
</span><span><span class="hljs-variable">$integers</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_filter</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>, </span><span><span class="hljs-string">'is_int'</span></span><span>);
</span><span><span class="hljs-comment">// Ausgangsergebnis</span></span><span>
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$integers</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Ausgabe:
<span><span><span class="hljs-title function_ invoke__">Array</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-number">2</span></span><span>] => </span><span><span class="hljs-number">2</span></span><span>
[</span><span><span class="hljs-number">4</span></span><span>] => </span><span><span class="hljs-number">4</span></span><span>
[</span><span><span class="hljs-number">6</span></span><span>] => </span><span><span class="hljs-number">5</span></span><span>
)
</span></span>
In diesem Beispiel wird Array_filter über das $ Array -Array iterieren und die Funktion is_int für jedes Element aufrufen. Nur wenn das Element eine Ganzzahl ist, gibt IS_int true zurück, Array_filter behält das Element.
Wenn das Array 0 oder false enthält, werden diese Elemente nicht von Array_Filter herausgefiltert, es sei denn, Sie sagen es ausdrücklich, diese Werte auszuschließen. Wenn Sie sich nur um Ganzzahltypen und nicht um die Werte kümmern, können Sie weiterhin die Filterung von IS_int verwenden.
Wenn Sie auch schwimmende Punktnummern (z. B. 3.5 ) herausfiltern möchten, können Sie dies tun, indem Sie die Logik der Rückruffunktion anpassen. Verwenden Sie beispielsweise IS_Float , um filtern.
<span><span><span class="hljs-variable">$filtered</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_filter</span></span><span>(</span><span><span class="hljs-variable">$array</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-title function_ invoke__">is_int</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>) && !</span><span><span class="hljs-title function_ invoke__">is_float</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>);
});
</span></span>
Array_filter selbst ist eine effiziente Funktion, die größere Datensätze verarbeiten kann. Wenn Sie ein riesiges Array zu tun haben, stellen Sie sicher, dass die Rückruflogik für Funktionen wie Is_int so einfach wie möglich ist, da die Rückruffunktion jedes Mal aufgerufen wird, wenn Iterating.
Wenn Sie höhere Leistungsanforderungen haben, können Sie versuchen, native für Schleifen zu verwenden, um Arrays manuell zu filtern, um einen Aufwand von Array_filter zu vermeiden:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$integers</span></span><span> = [];
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$array</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$item</span></span><span>) {
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_int</span></span><span>(</span><span><span class="hljs-variable">$item</span></span><span>)) {
</span><span><span class="hljs-variable">$integers</span></span><span>[] = </span><span><span class="hljs-variable">$item</span></span><span>;
}
}
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$integers</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Durch die Kombination von IS_int und Array_filter können wir alle ganzzahligen Werte aus dem Array einfach und effizient herausfiltern. Diese Methode ist ideal für Szenarien, in denen Daten schnell gereinigt und gefiltert werden müssen. Während Array_Filter eine saubere Syntax bietet, kann Foreach -Loops eine bessere Leistung bieten, wenn Ihr Array besonders groß ist. Durch die Auswahl der richtigen Tools und Methoden können Sie die Effizienz und Lesbarkeit Ihres Codes verbessern.
Verwandte Tags:
array_filter