L'algorithme de fusion et de déduplication de tableaux PHP fournit une solution parallèle, divisant le tableau d'origine en petits blocs pour un traitement parallèle, et le processus principal fusionne les résultats des blocs à dédupliquer. Étapes algorithmiques : divisez le tableau d'origine en petits blocs également alloués. Traitez chaque bloc pour la déduplication en parallèle. Fusionnez les résultats du bloc et dédupliquez à nouveau.
Introduction
En PHP, nous pouvons utiliser la fonction array_merge()
pour fusionner des tableaux. Cependant, lorsque des éléments en double sont présents, le tableau fusionné contiendra des éléments en double. Cet article décrit un algorithme parallèle pour fusionner efficacement les tableaux et supprimer les éléments en double.
Algorithme
L'algorithme fonctionne en divisant le tableau d'origine en petits morceaux et en traitant chaque morceau en parallèle. Parallèlement, un processus principal est chargé de fusionner les résultats de chaque bloc et de générer le tableau dédupliqué final.
Code
<?php use Parallel\{Parallel}; // 要合并的原始数组 $array1 = [1, 2, 3, 4, 5]; $array2 = [3, 4, 5, 6, 7]; // 使用 Parallel 类将数组分成小块 $parallel = new Parallel(); $blocks = $parallel->chunk($array1, 5); $blocks[] = $array2; // 添加第二个数组 // 并行处理每个块以去除重复元素 $results = $parallel->map($blocks, function ($block) { return array_unique($block); }); // 合并每个块的结果 $merged = array_merge(...$results); // 对合并后的数组进行去重 $unique = array_unique($merged); // 输出去重后的数组 print_r($unique);
Cas pratique
Cet algorithme est particulièrement adapté aux scénarios où de grandes quantités de données sont traitées. Par exemple, si vous disposez d'un tableau contenant des millions d'éléments, vous pouvez diviser le tableau en petits morceaux et les traiter en parallèle à l'aide d'un processeur ou d'un cluster multicœur. Cela améliore considérablement la vitesse de fusion et de déduplication des baies.
Remarque
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!