Dans PHP, la fonction Array_Filter est un outil très pratique qui est utilisé pour filtrer les éléments dans un tableau et décider de conserver l'élément en fonction de la valeur booléenne renvoyée par une fonction de rappel donnée. Cette fonction est souvent utilisée pour supprimer des éléments qui ne répondent pas aux critères d'un tableau, ou pour extraire des données en fonction de certaines logiques.
<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>
tableau (requis)
Il s'agit du tableau que vous souhaitez effectuer l'opération de filtrage.
rappel (facultatif)
Il s'agit d'une fonction de rappel qui détermine si chaque élément du tableau satisfait une certaine condition. Si ce paramètre est défini sur NULL , Array_Filter supprimera toutes les valeurs "vides" dans le tableau, telles que false , null , 0 , chaînes vides, etc.
mode (facultatif)
Il s'agit d'une constante qui détermine comment utiliser une fonction de rappel pour juger des éléments de tableau. Les modes couramment utilisés sont:
Array_filter_use_key : la fonction de rappel reçoit les clés du tableau au lieu de la valeur.
Array_filter_use_both : la fonction de rappel reçoit à la fois les touches et les valeurs.
Voici quelques exemples d'utilisation de Array_Filter communs:
<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>
Sortir:
<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>
Dans cet exemple, Array_Filter filtre toutes les valeurs "vides" telles que false , null , 0 , chaînes vides, etc.
<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">// Seuls même les nombres sont conservés</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>
Sortir:
<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>
Dans cet exemple, Array_Filter utilise une fonction de rappel pour vérifier si chaque élément dans le tableau est un numéro pair. Lorsque la valeur de retour est vraie , l'élément sera conservé.
<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">// Seules les clés sont conservées pour't'L'élément débutant</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>
Sortir:
<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>
Cet exemple montre comment filtrer en fonction des touches de tableau, array_filter_use_key, laissez la fonction de rappel recevoir les touches du tableau au lieu de la valeur.
<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">// La valeur réservée est supérieure à1Et la clé contient'a'Éléments</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>
Sortir:
<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>
Cet exemple utilise array_filter_use_both pour permettre à la fonction de rappel de filtrer avec les touches et les valeurs. Le résultat conservera des éléments avec une valeur supérieure à 1 et contenant la lettre «A» dans la clé.
La valeur de retour de la fonction de rappel:
La valeur de retour de la fonction de rappel doit être une valeur booléenne True ou False . Si le vrai est renvoyé, l'élément sera conservé et si FALSE est renvoyé, il sera supprimé.
Considérations de performance:
Array_Filter traversera l'intégralité du tableau de vérification. Si le tableau est très grand et que la fonction de rappel est complexe, elle peut affecter les performances. Dans ce cas, déterminez si la fonction de rappel peut être optimisée ou si d'autres méthodes peuvent être utilisées.
Tenue clé:
Array_Filter conserve les clés du tableau d'origine lors du filtrage. Cela signifie que si vous supprimez les éléments du tableau, les clés du réseau résultant ne seront pas réindexées.
Array_Filter est une fonction très puissante qui peut être utilisée pour filtrer les éléments dans un tableau basé sur diverses conditions. Il prend en charge non seulement les opérations de filtrage de base, mais fournit également des fonctions de rappel flexibles et plusieurs modes, ce qui peut vous aider plus efficacement lors du traitement des données. Comprendre et utiliser Array_Filter correctement peut rendre votre code plus concis et efficace, en particulier dans les scénarios où des données à grande échelle sont gérées ou des conditions de filtrage spécifiques sont nécessaires.
Étiquettes associées:
array_filter