Position actuelle: Accueil> Derniers articles> Processus des différences de tableau filtrées avec array_filter ()

Processus des différences de tableau filtrées avec array_filter ()

M66 2025-06-06

Dans PHP, la fonction array_filter () est un outil très utile qui peut filtrer les éléments dans un tableau basé sur une fonction de rappel donnée. En développement, nous devons souvent filtrer les tableaux, surtout lorsqu'il y a des éléments inutiles ou non conformes dans le tableau. Array_Filter () est une fonction efficace et flexible, mais il peut avoir des goulots d'étranglement de performances lorsque nous devons traiter avec plusieurs conditions de filtre ou optimiser les résultats de filtrage. Cet article présentera comment traiter les différences de tableau filtrées et optimisera les résultats avec la fonction Array_Filter () .

1. Utilisation de base de la fonction array_filter ()

Tout d'abord, passons en revue l'utilisation de base de la fonction array_filter () . Il accepte un tableau et une fonction de rappel qui teste chaque élément du tableau en fonction des conditions spécifiées. L'élément renvoyant True sera conservé et l'élément renvoyant faux sera filtré.

 $array = [1, 2, 3, 4, 5, 6];
$filteredArray = array_filter($array, function($value) {
    return $value % 2 === 0; // Filtrez les nombres uniformes
});

print_r($filteredArray);

Résultat de sortie:

 Array
(
    [1] => 2
    [3] => 4
    [5] => 6
)

Dans cet exemple, nous utilisons array_filter () pour filtrer les nombres uniformes dans le tableau. Ensuite, nous expliquerons comment optimiser l'utilisation de cette fonction pour améliorer l'efficacité lorsque vous traitez des tableaux complexes.

2. Différences de réseau filtré de processus

Lorsque vous utilisez array_filter () , vous pouvez rencontrer des types d'éléments incohérents dans le tableau, ou les noms de clés du tableau sont manquants. Si votre objectif est de comparer deux tableaux filtrés et de comprendre leurs différences, vous pouvez comparer les différences de table en combinaison avec array_diff () ou array_diff_assoc () .

Exemple: utilisez array_diff () pour comparer deux tableaux filtrés

 $array1 = [1, 2, 3, 4, 5];
$array2 = [2, 3, 6, 7];

// Tableaux de filtre
$filteredArray1 = array_filter($array1, function($value) {
    return $value % 2 === 0; // Filtrez les nombres uniformes
});

$filteredArray2 = array_filter($array2, function($value) {
    return $value % 2 === 0; // Filtrez les nombres uniformes
});

// Comparaison des différences
$diff = array_diff($filteredArray1, $filteredArray2);

print_r($diff);

Résultat de sortie:

 Array
(
    [0] => 4
)

Dans cet exemple, nous filtrons les nombres uniformes dans le tableau et utilisons Array_Diff () pour trouver des éléments qui existent dans filteredArray1 et non dans filteredArray2 .

3. Optimiser les performances Array_Filter ()

Bien que Array_Filter () soit une fonction très flexible, dans certains cas, en particulier lorsqu'il s'agit de grandes tableaux, il peut entraîner des problèmes de performance. Pour optimiser les performances, vous pouvez essayer les méthodes suivantes:

(1) les données de prétraitement

Avant de filtrer, prétraitez les données et supprimez les opérations inutiles. Par exemple, si vous savez que certains éléments dans un tableau seront filtrés, la suppression de ces éléments de la matrice à l'avance peut économiser des opérations de filtrage inutiles.

(2) réduire la complexité de la fonction de rappel

La fonction de rappel dans array_filter () est exécutée à chaque fois qu'elle est appelée, de sorte que la complexité de la fonction de rappel affectera les performances. Minimisez la logique à l'intérieur de la fonction de rappel, comme éviter de grandes quantités de calculs dans la fonction de rappel.

(3) Utilisez array_map () pour coopérer avec array_filter ()

Si vous devez d'abord cartographier le tableau (comme la conversion de certaines valeurs dans un tableau), vous pouvez utiliser array_map () avec array_filter () pour réduire la complexité du filtrage.

 $array = [1, 2, 3, 4, 5, 6];

// utiliser array_map() Effectuer le prétraitement
$mappedArray = array_map(function($value) {
    return $value * 2; // Multiplier chaque valeur par2
}, $array);

// utiliser array_filter() Effectuer le filtrage
$filteredArray = array_filter($mappedArray, function($value) {
    return $value > 5; // Le filtre est supérieur à5Valeur
});

print_r($filteredArray);

Résultat de sortie:

 Array
(
    [2] => 6
    [3] => 8
    [4] => 10
)

Cette méthode réduit le traitement inutile en convertissant d'abord le tableau avec array_map () , puis en filtrant les résultats avec array_filter () .

4. Faites attention au remplacement de l'URL

Au cours de certains processus de développement, nous pouvons rencontrer des scénarios où nous devons remplacer le nom de domaine dans l'URL. Si vous filtrez les éléments contenant des URL dans le tableau et devez modifier uniformément le nom de domaine, vous pouvez utiliser str_replace () pour l'implémenter:

 $urls = [
    'http://example.com/page1',
    'https://example.com/page2',
    'http://example.com/page3'
];

// Remplacer le nom de domaine comme m66.net
$updatedUrls = array_map(function($url) {
    return preg_replace('/https?:\/\/[^\/]+/', 'https://m66.net', $url);
}, $urls);

print_r($updatedUrls);

Résultat de sortie:

 Array
(
    [0] => https://m66.net/page1
    [1] => https://m66.net/page2
    [2] => https://m66.net/page3
)

Dans cet exemple, nous remplaçons la partie de domaine de l'URL par preg_replace () et remplaçons Exemple.com par m66.net .

5. Résumé

La fonction Array_Filter () est très puissante en PHP et peut nous aider à filtrer les éléments inutiles des tableaux. Lorsque vous traitez avec des différences de tableau filtrées, la combinaison de Array_Diff () et Array_Diff_assoc () peut facilement comparer les différences entre les deux tableaux. Dans le même temps, afin d'optimiser les performances, vous pouvez envisager de réduire la complexité de la fonction de rappel et d'utiliser des fonctions telles que Array_Map () pour coopérer avec elle. Lors du traitement des tableaux contenant des URL, nous pouvons également remplacer rapidement le nom de domaine via str_replace () ou preg_replace () pour faciliter la modification unifiée des URL.