


Méthode de fusion de tableaux PHP : array_merge VS array_push VS ajout d'élément
Cet article partagera avec vous trois méthodes de fusion de tableaux PHP : array_merge, array_push et la méthode element append, et comparera leurs performances et leur consommation de mémoire.
Pour implémenter la fusion de tableaux en PHP, il existe deux méthodes couramment utilisées :
- Utilisez directement array_merge. Bien que cette méthode garde le code simple, elle augmente considérablement la surcharge de mémoire et ralentit les performances du processus PHP.
- Parcourez le tableau et ajoutez les valeurs du tableau au tableau de résultats une par une. Par rapport à l'utilisation directe de array_merge, bien que cette méthode augmente la quantité de code, elle réduit la surcharge de mémoire de PHP et améliore les performances.
⒈ Implémentation du code
/** 用 PHP 实现将一个二维数组合并为一个一维数组 */ // 数组的长度 $len = $argv[1]; $start = 0; $arr = []; // 数组初始化 while ($start < $len) { $arr[$start] = range(1, $len); $start ++; } // 采用 array_merge 的方式合并数组 function merge1 (array $input) { $results = []; foreach ($input as $item) { $results = array_merge($results, $item); } return $results; } // 采用 array_push 的方式合并数组 function merge2 (array $input) { $results = []; foreach ($input as $item) { foreach ($item as $v) { array_push($results, $v); } } return $results; } // 采用元素追加的方式合并数组 function merge3(array $input) { $results = []; foreach ($input as $item) { foreach ($item as $v) { $results [] = $v; } } return $results; } echo microtime(), PHP_EOL; $res = merge3($arr); echo microtime(), PHP_EOL; echo memory_get_usage(), PHP_EOL; echo memory_get_peak_usage(), PHP_EOL;
⒉ Comparaison des résultats d'exécution
数组长度 | array_merge | array_push | 元素追加 | |||
内存消耗(B) | 运行时间(㎲) | 内存消耗(B) | 运行时间(㎲) | 内存消耗(B) | 运行时间(㎲) | |
5 | 432,440 | 20 | 433,200 | 25 | 433,200 | 19 |
50 | 764,704 | 322 | 629,736 | 141 | 629,736 | 102 |
500 | 27,434,944 | 897,422 | 19,042,416 | 11,294 | 19,042,416 | 8,182 |
5,000 | 3,479,599,136 | 904,476,129 | 2,405,853,392 | 1,266,203 | 2,405,853,392 | 1,022,328 |
⒊ Analyse des causes
Utiliser
array_merge
, à chaque fois appelé, un nouvel espace mémoire doit être alloué pour le tableau de résultats dearray_merge
(PHP utilise un mécanisme de copie sur écriture etarray_merge
n'écrit pas de paramètres, donc chaque appel Il n'est pas nécessaire de réallouer de la mémoire pour les paramètres d'entrée). À mesure que la longueur du tableau augmente, le nombre d'appels àarray_merge
augmentera également, et le nombre de réallocations de mémoire augmentera également. Dans le même temps, la longueur du tableau résultat continuera d'augmenter. , et l'espace mémoire qui doit être alloué à chaque fois augmentera également à mesure qu'il augmente, il consomme beaucoup de mémoire. Dans le même temps, l’allocation/destruction fréquente de mémoire entraîne une dégradation des performances de PHP.array_merge
,每调用一次,都需要为array_merge
的结果数组分配新的内存空间(PHP 采用的是写时复制的机制,而array_merge
不会对参数进行写操作,所以每次调用时并不需要为入参重新分配内存)。随着数组长度的增加,调用array_merge
的次数也会增加,重新分配内存的次数也会增加,同时结果数组的长度不断增加,每次所需要分配的内存空间也会随着增加,这就需要消耗大量的内存。同时,频繁的分配/销毁内存,导致 PHP 的性能下降。使用
array_push
,只需要对结果数组分配一次内存,之后会一直往结果数组中追加元素。PHP 数组的底层实现方式为hashtable
,并且在初始化时会为hashtable
分配 8 个长度的bucket
,每个bucket
存储一个数组元素。当现有的bucket
用完之后,如果还要继续往数组中追加元素,那么 PHP 会将现有的bucket
数量翻倍,所以,使用array_push
往结果数组中追加元素时,并不是每次操作都需要分配新的bucket
,这样就减少了分配内存的次数,同时加快了程序运行时间,提升了 PHP 性能。使用元素追加的方式,原理与
array_push
类似,唯一的区别在于使用array_push
array_push
, vous n'avez besoin d'allouer de la mémoire au tableau de résultats qu'une seule fois, puis les éléments seront ajoutés au tableau de résultats. L'implémentation sous-jacente du tableau PHP est hashtable
, et lors de l'initialisation, hashtable
se verra attribuer 8 longueurs de bucket
, chaque bucket code> Stocke un élément du tableau. Lorsque le <code>bucket
existant est épuisé, si vous continuez à ajouter des éléments au tableau, PHP doublera le nombre de bucket
existant, utilisez donc array_push
Lors de l'ajout d'éléments au tableau de résultats, toutes les opérations n'ont pas besoin d'allouer un nouveau bucket
, ce qui réduit le nombre d'allocations de mémoire, accélère le temps d'exécution du programme et améliore les performances PHP. Le principe de l'ajout d'éléments est similaire à array_push
. La seule différence est qu'il y aura des appels de fonction lors de l'utilisation de array_push
, alors que la méthode d'ajout d'éléments ne le fait pas. nécessitent des appels de fonction. De cette façon, le programme fonctionnera de manière plus légère. 🎜🎜🎜🎜Apprentissage recommandé : "🎜Tutoriel vidéo PHP🎜"🎜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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

Si vous êtes un développeur PHP expérimenté, vous aurez peut-être le sentiment d'y être déjà allé et de l'avoir déjà fait. Vous avez développé un nombre important d'applications, débogué des millions de lignes de code et peaufiné de nombreux scripts pour réaliser des opérations.

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Liaison statique (statique: :) implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Quelles sont les méthodes magiques de PHP? Les méthodes magiques de PHP incluent: 1. \ _ \ _ Construct, utilisé pour initialiser les objets; 2. \ _ \ _ Destruct, utilisé pour nettoyer les ressources; 3. \ _ \ _ Appel, gérer les appels de méthode inexistants; 4. \ _ \ _ GET, Implémentez l'accès à l'attribut dynamique; 5. \ _ \ _ SET, Implémentez les paramètres d'attribut dynamique. Ces méthodes sont automatiquement appelées dans certaines situations, améliorant la flexibilité et l'efficacité du code.
