En PHP, les problèmes d'efficacité deviennent souvent des goulots d'étranglement des performances lorsqu'ils traitent de grands tableaux. Lorsque nous modifions le contenu du tableau, si nous pouvons raisonnablement diviser le tableau et effectuer un traitement parallèle, nous pouvons améliorer efficacement l'efficacité d'exécution du code. array_chunk et array_map sont deux puissantes fonctions de fonctionnement PHP Array. La combinaison de ces deux fonctions peut considérablement améliorer les performances lors du traitement par lots de grands tableaux.
array_chunk : cette fonction est utilisée pour diviser un grand tableau en plusieurs tableaux plus petits pour un traitement de segmentation facile. Il est utilisé comme suit:
array_chunk($array, $size);
Ici, le tableau $ est le tableau d'origine à diviser, et la taille $ est la taille de chaque sous-réseau.
array_map : cette fonction est utilisée pour appliquer une fonction de rappel à chaque élément du tableau, renvoyant ainsi un tableau modifié. La syntaxe de base est la suivante:
array_map($callback, $array);
Où $ callback est une fonction de rappel utilisée pour traiter chaque élément de tableau, et $ array est un tableau à traiter.
Lorsque vous traitez avec de grands tableaux, le traitement directement du tableau entier peut prendre beaucoup de mémoire, surtout si chaque élément doit être modifié. Si nous pouvons diviser le tableau en plusieurs sous-réseaux plus petits, le traitement d'un sous-réseau à la fois, il peut non seulement réduire l'utilisation de la mémoire, mais également améliorer l'efficacité d'exécution du code.
En utilisant Array_Chunk et Array_Map en combinaison, nous pouvons d'abord diviser le grand tableau en sous-réseaux plus petits, puis modifier les données dans chaque sous-barre via Array_Map , et enfin combiner les sous-réseaux modifiés dans le résultat final.
Supposons que nous ayons un tableau contenant des informations utilisateur, nous devons mettre à jour par lots à mettre à jour l'adresse e-mail de chaque utilisateur. Plus précisément, nous modifions le nom de domaine des e-mails de l'exemple.com à m66.net .
<?php
// Tableau d'informations utilisateur d'origine
$users = [
['id' => 1, 'name' => 'Alice', 'email' => 'alice@example.com'],
['id' => 2, 'name' => 'Bob', 'email' => 'bob@example.com'],
['id' => 3, 'name' => 'Charlie', 'email' => 'charlie@example.com'],
['id' => 4, 'name' => 'David', 'email' => 'david@example.com'],
// Autres utilisateurs...
];
// Chaque traitement 2 Un utilisateur
$chunkedUsers = array_chunk($users, 2);
// utiliser array_map Batch modifie les données utilisateur dans chaque sous-réseau
$updatedUsers = array_map(function($chunk) {
return array_map(function($user) {
$user['email'] = str_replace('@example.com', '@m66.net', $user['email']);
return $user;
}, $chunk);
}, $chunkedUsers);
// Combinez les sous-régions modifiées à un grand tableau
$updatedUsers = array_merge(...$updatedUsers);
// Sortie des données utilisateur modifiées
print_r($updatedUsers);
?>
Tableau divisé : Tout d'abord, utilisez Array_Chunk pour diviser le tableau d'origine $ les utilisateurs en tableaux plus petits contenant 2 utilisateurs par sous-réseau. L'avantage est que même s'il y a des milliers d'utilisateurs, ils peuvent être traités par lots.
Modification par lots : Dans chaque sous-réseau, utilisez Array_Map pour modifier l'adresse e-mail de l'utilisateur. Grâce à la fonction de rappel, nous utilisons STR_REPLACE pour remplacer le nom de domaine @ example.com dans la boîte aux lettres par @ m66.net .
Résultat de la fusion : Une fois la modification terminée, nous utilisons Array_merge pour remerger tous les sous-réseaux dans un tableau pour obtenir le résultat final de mise à jour.
En divisant le tableau en plusieurs parties plus petites, nous pouvons utiliser plus efficacement la gestion de la mémoire de PHP pour éviter les problèmes de performances causés par le chargement de grandes quantités de données à la fois. Dans le même temps, Array_Map est une fonction hautement optimisée qui peut fonctionner efficacement sur chaque élément. La combinaison de ces deux peut non seulement réduire l'utilisation de la mémoire, mais également améliorer la vitesse de traitement.
L'utilisation d'une combinaison de Array_Chunk et Array_Map pour modifier le contenu dans les tableaux PHP peut considérablement améliorer l'efficacité de la gestion des tableaux à grande échelle. En divisant raisonnablement les tableaux et en optimisant les opérations par lots, nous pouvons mieux gérer la mémoire et accélérer le traitement des données. Cette méthode est particulièrement efficace pour les scénarios d'application qui nécessitent un traitement de grandes quantités de données.
Étiquettes associées:
array_map