Maison  >  Article  >  développement back-end  >  Implémentez une fusion de tableaux efficace à l'aide de la fonction array_reduce() en PHP8

Implémentez une fusion de tableaux efficace à l'aide de la fonction array_reduce() en PHP8

王林
王林original
2023-05-16 09:00:201315parcourir

Au fur et à mesure que le langage PHP continue de se développer, les fonctions qu'il fournit sont constamment mises à jour et améliorées. L'une des fonctions remarquables est array_reduce(). Cette fonction implémente des opérations de fusion de tableaux efficaces et peut nous aider à mieux traiter les données des tableaux.

Dans cet article, nous présenterons comment utiliser la fonction array_reduce() en PHP8 pour réaliser une fusion de tableaux efficace, et explorerons ses avantages et son côté pratique dans des applications pratiques. Présentation de la fonction

  1. array_reduce()

array_reduce() est une fonction d'ordre élevé en PHP, qui fusionne un tableau élément par élément en une seule valeur via le traitement de la fonction de rappel. Le prototype de la fonction est le suivant :

mixed array_reduce ( array $array , callable $callback [, mixed $initial = NULL ] )

Le paramètre tableau est le tableau qui doit être traité, le paramètre de rappel est la fonction de rappel et le paramètre initial est la valeur initiale de la fonction de rappel. Le prototype de la fonction de rappel est le suivant :

mixed callback ( mixed $carry , mixed $value )

Le paramètre carry est la valeur de retour précédente de la fonction de rappel, et le paramètre value est l'élément du tableau actuellement à traiter.

En utilisant la fonction array_reduce(), nous pouvons facilement parcourir les tableaux et les fusionner en une seule valeur.

  1. Méthodes pour obtenir une fusion de tableaux efficace

Supposons maintenant que nous ayons deux tableaux array1 et array2, nous voulons maintenant fusionner ces deux tableaux en un seul tableau. Nous pouvons essayer d'utiliser la fonction array_merge() en PHP. Son utilisation est la suivante :

$array3 = array_merge($array1, $array2);

Cependant, s'il y a des éléments en double dans le tableau, la fonction array_merge() supprimera les éléments en double, cette fonction ne convient donc pas. pour nos besoins.

Nous pouvons essayer d'utiliser la fonction array_reduce() en PHP8 pour obtenir une fusion de tableaux efficace. La méthode d'implémentation spécifique est la suivante :

$array1 = ['a', 'b', 'c'];
$array2 = ['d', 'e', 'f'];
$result = array_reduce($array2, function($carry, $value) {
    $carry[] = $value;
    return $carry;
}, $array1);

Dans cet exemple, nous définissons deux tableaux $array1 et $array2, puis ajoutons le tableau $array2 à $array1 élément par élément. Nous avons utilisé la fonction array_reduce() pour parcourir le tableau $array2, l'ajouter un par un au paramètre $carry et enfin renvoyer le paramètre $carry. Puisque le paramètre initial est défini sur le tableau $array1, le résultat final est que le tableau $array2 est ajouté au tableau $array1.

  1. Avantages de la fonction array_reduce()

L'avantage d'utiliser la fonction array_reduce() est qu'elle nous permet d'éviter d'utiliser des boucles pour implémenter des opérations de fusion de tableaux, améliorant ainsi la lisibilité et l'efficacité du code. De plus, l'utilisation de la fonction array_reduce() présente les avantages suivants :

  1. Code concis : l'utilisation de la fonction array_reduce() peut simplifier le code et éviter l'utilisation de structures de boucles complexes et longues.
  2. Flexibilité : l'utilisation de fonctions de rappel nous permet d'implémenter des opérations de fusion de tableaux très flexibles, simplifiant ainsi la difficulté d'écrire du code.
  3. Réutilisation du code : à l'aide de fonctions de rappel appropriées, des fonctions de traitement de tableau communes peuvent être implémentées afin qu'elles puissent être réutilisées dans d'autres applications.
  4. Cas d'utilisation dans des applications pratiques

La fonction array_reduce() peut être utilisée dans de nombreux scénarios d'application pratiques. Voici quelques cas d'utilisation :

  1. Combiner plusieurs tableaux en un seul tableau

    $members = array_merge($array1, $array2, $array3);

    peut être modifié pour :

    $members = array_reduce([$array1, $array2, $array3], 'array_merge', []);
  2. Calculer la moyenne pondérée des tableaux

    function weighted_average($values, $weights) {
     $weighted_sum = array_reduce($values, function($sum, $value) use ($weights) {
         $sum += array_shift($weights) * $value;
         return $sum;
     }, 0);
     $total_weight = array_reduce($weights, function($sum, $value) {
         $sum += $value;
         return $sum;
     }, 0);
     return $weighted_sum / $total_weight;
    }
  3. Convertir plusieurs tableaux 2D identiques Fusionner les valeurs clés ​​

    $records = [
     ['id' => 1, 'name' => 'A'],
     ['id' => 2, 'name' => 'B'],
     ['id' => 3, 'name' => 'C'],
    ];
    
    $details = [
     ['id' => 1, 'age' => 20],
     ['id' => 2, 'age' => 25],
     ['id' => 3, 'age' => 30],
    ];
    
    $merged = array_reduce($records, function ($carry, $item) use ($details) {
     $index = array_search($item['id'], array_column($details, 'id'));
     $carry[] = array_merge($item, $details[$index]);
     return $carry;
    }, []);
  4. Résumé

Dans cet article, nous avons présenté la méthode d'utilisation de la fonction array_reduce() en PHP8 pour obtenir une fusion de tableaux efficace, et avons discuté de ses avantages et de ses cas d'application dans des applications pratiques. La fonction array_reduce() est l'une des fonctions d'ordre élevé très pratiques de PHP. Nous pouvons l'utiliser pleinement dans le développement quotidien pour améliorer la lisibilité et l'efficacité du code et effectuer rapidement et efficacement les opérations liées aux tableaux.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn