Array_reduce est une fonction de traitement de tableau intégrée dans PHP, qui est utilisée pour passer chaque élément dans le tableau à une fonction de rappel et l'accumuler étape par étape dans une valeur. La syntaxe de base est la suivante:
<span><span><span class="hljs-title function_ invoke__">array_reduce</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-keyword">mixed</span></span><span> </span><span><span class="hljs-variable">$initial</span></span><span> = </span><span><span class="hljs-literal">NULL</span></span><span>): </span><span><span class="hljs-keyword">mixed</span></span><span>
</span></span>$ Array : le tableau à traiter.
$ rappel : la fonction de rappel est responsable du traitement de chaque élément dans le tableau.
$ initial : valeur initiale facultative, par défaut à Null .
La fonction de rappel recevra deux paramètres:
Valeur accumulée (la dernière valeur de retour ou valeur initiale).
L'élément de tableau actuellement traité.
Supposons que nous ayons un tableau et que nous voulions trouver la valeur maximale via Array_reduce . Nous pouvons concevoir une fonction de rappel afin qu'il renvoie toujours la valeur maximale actuelle.
Considérez l'exemple de code suivant:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Tableau d'origine</span></span><span>
</span><span><span class="hljs-variable">$array</span></span><span> = [</span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>, </span><span><span class="hljs-number">7</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">8</span></span><span>, </span><span><span class="hljs-number">6</span></span><span>, </span><span><span class="hljs-number">4</span></span><span>];
</span><span><span class="hljs-comment">// utiliser array_reduce Trouver la valeur maximale</span></span><span>
</span><span><span class="hljs-variable">$max_value</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_reduce</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>, function(</span><span><span class="hljs-variable">$carry</span></span><span>, </span><span><span class="hljs-variable">$item</span></span><span>) {
</span><span><span class="hljs-comment">// si carry Vide,Puis prenez l'élément actuel comme carry La valeur initiale de</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$carry</span></span><span> === </span><span><span class="hljs-literal">null</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$item</span></span><span>;
}
</span><span><span class="hljs-comment">// retour carry et item La valeur maximale dans</span></span><span>
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$carry</span></span><span> > </span><span><span class="hljs-variable">$item</span></span><span> ? </span><span><span class="hljs-variable">$carry</span></span><span> : </span><span><span class="hljs-variable">$item</span></span><span>;
});
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"数组La valeur maximale dans是: "</span></span><span> . </span><span><span class="hljs-variable">$max_value</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>Dans le code ci-dessus, nous définissons un tableau appelé $ Array qui contient des entiers.
Nous itons sur le tableau à l'aide de la fonction Array_reduce . À l'intérieur de la fonction de rappel, nous en sélectionnons la valeur maximale en comparant le transport et l'élément actuels. Carry enregistre le résultat de la dernière comparaison et l'élément est l'élément actuellement traité.
Lorsque le transport est nul (c'est-à-dire la première itération), nous utilisons directement l' élément actuel comme valeur initiale du transport .
Enfin, Array_reduce renvoie le plus grand élément de l'ensemble du tableau.
Dans PHP, nous pouvons utiliser la fonction max () pour résoudre la valeur maximale dans le tableau, et le code est très concis:
<span><span><span class="hljs-variable">$max_value</span></span><span> = </span><span><span class="hljs-title function_ invoke__">max</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>);
</span></span>Cependant, l'utilisation de Array_reduce pour les opérations d'accumulation présente les avantages suivants:
Flexibilité élevée : Array_reduce nous permet de personnaliser le processus d'accumulation et de nous adapter à des besoins plus complexes.
Programmation fonctionnelle : Array_reduce peut obtenir un style de programmation fonctionnel plus concis, et le code est plus concis et élégant.
Évolutivité : lorsque les exigences deviennent plus complexes, Array_reduce est plus facile à évoluer dans la logique de calcul en plusieurs étapes, plutôt que d'être limité aux valeurs maximales de retour comme la fonction max () .
Cette méthode de calcul de valeur maximale de Array_reduce a un excellent potentiel d'application dans le développement réel, en particulier lors du traitement des données complexes. Par exemple:
Pendant le traitement des données, les informations doivent être agrégées étape par étape et, dans certains cas spécifiques, la valeur maximale dans le tableau doit être suivie.
Il est nécessaire d'extraire une valeur maximale spécifique à partir des données des structures complexes, telles que l'obtention de la valeur maximale à partir de tableaux imbriqués et de tableaux d'objets.
Grâce à la fonction Array_reduce , en utilisant la logique de rappel personnalisée, le fonctionnement d'accumulation des éléments du tableau peut être réalisé et la valeur maximale dans le tableau peut être résolue. Cette méthode a non seulement une grande flexibilité, mais aide également les développeurs à mieux comprendre et appliquer les fonctionnalités de programmation fonctionnelle de PHP. Bien sûr, pour des scénarios simples, l'utilisation de la fonction Max () intégrée de PHP sera plus efficace, mais si vos besoins sont un peu plus compliqués, Array_reduce est sans aucun doute un bon choix.