En PHP, le traitement des tableaux est une tâche courante, en particulier pendant le nettoyage, le filtrage et la conversion des données. Il peut y avoir pas mal de défis lorsque vous devez extraire toutes les valeurs entières d'un tableau mixte. Heureusement, PHP fournit des outils puissants qui rendent le processus à la fois efficace et simple. Cet article montrera comment filtrer facilement les entiers dans un tableau via la combinaison des fonctions is_int et array_filter .
La fonction Array_Filter est utilisée pour parcourir un tableau et utiliser une fonction de rappel pour décider de conserver un élément dans le tableau. Sa syntaxe est la suivante:
<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 : Array en attente.
$ rappel : une fonction de rappel qui filtre les éléments dans un tableau. Si le rappel renvoie true , l'élément sera conservé; Si false est retourné, l'élément sera jeté.
Mode $ : mode filtre, détermine les paramètres de la fonction de rappel.
Si le paramètre de rappel $ n'est pas passé, Array_Filter supprimera les éléments avec une valeur de faux (y compris les chaînes vides, 0, null , etc.) par défaut.
IS_INT est une fonction intégrée PHP pour vérifier si une variable est un entier. La syntaxe est la suivante:
<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 : la variable à vérifier.
Valeur de retour: return true si $ var est un entier; Sinon, renvoyez false .
Le moyen le plus simple de filtrer tous les entiers dans un tableau est d'utiliser est_int avec array_filter . Il vous suffit de fournir une fonction de rappel qui appelle est_int pour vérifier si chaque élément de tableau est un entier.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Définissez un tableau de types mixtes</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">// utiliser array_filter et is_int Filtrer les entiers</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">// Résultat de sortie</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>
Sortir:
<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>
Dans cet exemple, Array_Filter iratera le tableau de bilan $ et appellera la fonction is_int pour chaque élément. Ce n'est que lorsque l'élément est un entier, IS_INT Renvoie True , Array_Filter conservera l'élément.
Si le tableau contient 0 ou FAUX , ces éléments ne seront pas filtrés par Array_Filter, sauf si vous lui dites explicitement d'exclure ces valeurs. Si vous ne vous souciez que des types entiers et non des valeurs, vous pouvez continuer à utiliser le filtrage IS_INT .
Si vous souhaitez également filtrer les numéros de points flottants (tels que 3.5 ), vous pouvez le faire en ajustant la logique de la fonction de rappel. Par exemple, utilisez IS_FLOAT pour filtrer davantage.
<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 lui-même est une fonction efficace qui peut gérer des ensembles de données plus grands. Si vous avez un tableau énorme à gérer, assurez-vous que la logique de rappel pour des fonctions telles que IS_INT est aussi simple que possible, car la fonction de rappel sera appelée à chaque fois.
Si vous avez des exigences de performances plus élevées, vous pouvez essayer d'utiliser des boucles ForEach natives pour filtrer manuellement les tableaux pour éviter certaines frais généraux de Array_Filter :
<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>
En combinant IS_INT et Array_Filter , nous pouvons filtrer facilement et efficacement toutes les valeurs entières du tableau. Cette méthode est idéale pour les scénarios où les données doivent être rapidement nettoyées et filtrées. Alors que Array_Filter fournit une syntaxe propre, Foreach Loops peut fournir de meilleures performances si votre tableau est particulièrement important. En général, le choix des bons outils et méthodes peut vous aider à améliorer l'efficacité et la lisibilité de votre code.
Étiquettes associées:
array_filter