<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// -------------------------------------------------------------</span></span><span>
</span><span><span class="hljs-comment">// PHP array_filter() Fonction Introduction et applications de filtrage flexible</span></span><span>
</span><span><span class="hljs-comment">// -------------------------------------------------------------</span></span><span>
<span class="hljs-comment">/**
* exister PHP milieu,array_filter() C'est une fonction intégrée très puissante,
* 它能够通过回调函数对数组milieuÉléments进行筛选,
* Renvoie un sous-réseau qui répond aux critères,Cela aide les développeurs à traiter les données de manière flexible。
* Cet article introduira en détail array_filter() Utilisation et certaines techniques de dépistage pratiques。
*/</span>
</span><span><span class="hljs-comment">// 1. Utilisation de base:Filtrez des éléments non vides</span></span><span>
</span><span><span class="hljs-variable">$input</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-string">''</span></span><span>, </span><span><span class="hljs-literal">null</span></span><span>, </span><span><span class="hljs-literal">false</span></span><span>, </span><span><span class="hljs-string">'hello'</span></span><span>, </span><span><span class="hljs-string">'0'</span></span><span>];
</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">$input</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$filtered</span></span><span>);
<span class="hljs-comment">/*
résultat:
Array
(
[1] => 1
[2] => 2
[6] => hello
)
*/</span>
</span><span><span class="hljs-comment">// illustrer:Quand aucune fonction de rappel n'est fournie,array_filter() Supprimer tout par défaut“Équivalent à false”Valeur。</span></span><span>
</span><span><span class="hljs-comment">// 2. Fonctions de rappel personnalisées pour filtrer les éléments de conditions spécifiques</span></span><span>
</span><span><span class="hljs-variable">$numbers</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-number">6</span></span><span>];
</span><span><span class="hljs-variable">$evenNumbers</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_filter</span></span><span>(</span><span><span class="hljs-variable">$numbers</span></span><span>, function(</span><span><span class="hljs-variable">$num</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$num</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-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$evenNumbers</span></span><span>);
<span class="hljs-comment">/*
résultat:
Array
(
[1] => 2
[3] => 4
[5] => 6
)
*/</span>
</span><span><span class="hljs-comment">// illustrer:La fonction de rappel renvoie true Les éléments de,false Il sera filtré。</span></span><span>
</span><span><span class="hljs-comment">// 3. Utiliser le filtrage du nom de la clé</span></span><span>
</span><span><span class="hljs-variable">$assoc</span></span><span> = [
</span><span><span class="hljs-string">'apple'</span></span><span> => </span><span><span class="hljs-number">3</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-string">'cherry'</span></span><span> => </span><span><span class="hljs-number">1</span></span><span>,
</span><span><span class="hljs-string">'date'</span></span><span> => </span><span><span class="hljs-number">7</span></span><span>,
];
</span><span><span class="hljs-comment">// Seule la longueur du nom de clé est supérieure à5Éléments</span></span><span>
</span><span><span class="hljs-variable">$filteredByKey</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_filter</span></span><span>(</span><span><span class="hljs-variable">$assoc</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-title function_ invoke__">strlen</span></span><span>(</span><span><span class="hljs-variable">$key</span></span><span>) > </span><span><span class="hljs-number">5</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">$filteredByKey</span></span><span>);
<span class="hljs-comment">/*
résultat:
Array
(
[banana] => 5
[cherry] => 1
)
*/</span>
</span><span><span class="hljs-comment">// 4. Exemple de filtre à réseau multicouche</span></span><span>
</span><span><span class="hljs-variable">$users</span></span><span> = [
[</span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Alice'</span></span><span>, </span><span><span class="hljs-string">'age'</span></span><span> => </span><span><span class="hljs-number">23</span></span><span>, </span><span><span class="hljs-string">'active'</span></span><span> => </span><span><span class="hljs-literal">true</span></span><span>],
[</span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Bob'</span></span><span>, </span><span><span class="hljs-string">'age'</span></span><span> => </span><span><span class="hljs-number">30</span></span><span>, </span><span><span class="hljs-string">'active'</span></span><span> => </span><span><span class="hljs-literal">false</span></span><span>],
[</span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Charlie'</span></span><span>, </span><span><span class="hljs-string">'age'</span></span><span> => </span><span><span class="hljs-number">27</span></span><span>, </span><span><span class="hljs-string">'active'</span></span><span> => </span><span><span class="hljs-literal">true</span></span><span>],
];
</span><span><span class="hljs-comment">// Filtrez plus vieux que25Utilisateurs actifs</span></span><span>
</span><span><span class="hljs-variable">$activeAdults</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_filter</span></span><span>(</span><span><span class="hljs-variable">$users</span></span><span>, function(</span><span><span class="hljs-variable">$user</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$user</span></span><span>[</span><span><span class="hljs-string">'age'</span></span><span>] > </span><span><span class="hljs-number">25</span></span><span> && </span><span><span class="hljs-variable">$user</span></span><span>[</span><span><span class="hljs-string">'active'</span></span><span>] === </span><span><span class="hljs-literal">true</span></span><span>;
});
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$activeAdults</span></span><span>);
<span class="hljs-comment">/*
résultat:
Array
(
[2] => Array
(
[name] => Charlie
[age] => 27
[active] => 1
)
)
*/</span>
</span><span><span class="hljs-comment">// 5. Précautions et suggestions de performance</span></span><span>
</span><span><span class="hljs-comment">// - array_filter Le tableau ne sera pas réindexé,Gardez le nom de clé d'origine。</span></span><span>
</span><span><span class="hljs-comment">// - Si une indexation continue est requise,Peut coopérer array_values utiliser。</span></span><span>
</span><span><span class="hljs-comment">// - exister处理大数组时,Simplifier la logique de la fonction de rappel autant que possible,Évitez les goulots d'étranglement des performances。</span></span><span>
</span><span><span class="hljs-comment">// Résumer:</span></span><span>
</span><span><span class="hljs-comment">// array_filter() Oui PHP milieu筛选数组元素的利器,Définition flexible des fonctions de rappel,</span></span><span>
</span><span><span class="hljs-comment">// Une variété d'exigences de dépistage complexes peuvent être atteintes,Améliorer la simplicité et la lisibilité du code。</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Étiquettes associées:
array_filter