[PHP源码阅读]array_push和array_unshift函数,arrayunshift_PHP教程
[PHP源码阅读]array_push和array_unshift函数,arrayunshift
在PHP中,在数组中添加元素也是一种很常用的操作,分别有在数组尾部和头部添加元素,看看PHP内部是如何实现数组插入的操作。
我在github有对PHP源码更详细的注解。感兴趣的可以围观一下,给个star。PHP5.4源码注解。可以通过commit记录查看已添加的注解。
array_push
<p>int array_push ( array &$array , mixed $value1 [ , mixed $... ] )</p>
array_push函数将array参数看做一个栈,将传递进来的变量压倒array的尾部。array的长度随着被压进去的变量个数增加。下面的代码有意义的效果:
$array[] = $var;
如果只需要添加一个元素到数组,使用$array[] 这种方式更好,因为这样做不用调用函数。
运行示例
<span>$arr</span> = <span>array</span><span>(); </span><span>array_push</span>(<span>$arr</span>, 1, 2, 3); <span>//</span><span> return 3; $arr = [1, 2, 3]</span>
运行步骤
array_push函数相对比较简单,就相当于压栈操作,把array看做一个栈,然后对每一个参数,让其变成引用,引用数加一,然后添加它到数组的尾部。
内部实现的流程图如下:
$arr = array(1, 2, 3);
array_unshift($arr, 4, 5, 6); // 4 5 6 1 2 3
运行步骤
<p>1、调用php_splice将数据元素插入到数组头部,用新的哈希表替换就得哈希表并将其销毁</p> <p>2、如果操作后的stack等于运行时的符号表,则重置哈希表的内部指针</p> <p>3、stack指向新的哈希表,释放新的哈希表红箭,销毁就得哈希表</p>
源码解读
由上面的步骤可知,array_unshift的核心步骤是php_splice函数。对于array_unshift函数,php_splice实现时新建一个哈希表out_hash,将需要插入的list数据先插入到out_hash中,然后再把原来的数组数据写入到out_hash中,这样实现在数组前面插入数据元素的功能。
实现的效果图如下:
这次阅读源码过程中,同时也研究了PHP中的哈希表数据结构及一些API,也给自己补充了一些哈希表的知识。学习到了PHP底层是使用双向链表做哈希冲突的处理,获益匪浅。日后再做关于PHP数据结构的分享。
原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。
如果本文对你有帮助,请点下推荐吧,谢谢^_^
最后再安利一下,我在github有对PHP源码更详细的注解。感兴趣的可以围观一下,给个star。PHP5.4源码注解。可以通过commit记录查看已添加的注解。
更多源码文章,欢迎访问个人主页继续查看:hoohack

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

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

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)

Solution au problème selon lequel appuyer sur Shift ne peut pas basculer entre le chinois et l'anglais : 1. Trouvez la touche Win et cliquez pour ouvrir ; 2. Recherchez « Paramètres » et cliquez pour ouvrir, puis ouvrez « Heure et langue » 3. Cliquez sur « Région et langue » ; Langue" et ouvrez "Options" "; 4. Cliquez sur "Options" puis sélectionnez "shift" sur la première ligne.

La touche Maj de Mac est une touche au-dessus de la touche fn et en dessous de la touche de verrouillage des majuscules. Cette touche se trouve à l'extrême gauche du clavier, la deuxième touche en bas à droite est la touche de changement de vitesse vers le haut du clavier. et est accessible via la combinaison de touches « Ctrl+Shift » pour changer de méthode de saisie.

ctrl+shift est une combinaison de touches de raccourci permettant de changer de méthode de saisie ; lorsque vous appuyez sur "ctrl+shift" en même temps, vous pouvez également maintenir d'autres touches enfoncées pour obtenir d'autres fonctions, comme appuyer simultanément sur "ctrl+shift+N". touche temporelle pour créer un nouveau dossier, etc.

Récemment, certains amis ont signalé qu'ils ne savaient pas où appuyer, ce qui entraînait le verrouillage de la touche Maj du clavier. Que se passe-t-il ? Comment résoudre cette situation ? Je vais vous donner ici une introduction détaillée à Win10. Découvrez comment déverrouiller le verrouillage du clavier. Méthode d'annulation : 1. Cliquez sur « Démarrer » dans la barre des tâches dans le coin inférieur gauche et sélectionnez « Paramètres » dans la liste du menu. 2. Après être entré dans la nouvelle interface, cliquez sur l'option « Heure et langue ». 3. Cliquez ensuite sur « Région et langue » dans la colonne de gauche, puis cliquez sur « Paramètres avancés du clavier » dans « Paramètres associés » à droite. 4. Cliquez ensuite sur « Options de la barre de langue ». 5. Dans la fenêtre qui s'ouvre, cliquez sur l'onglet "Paramètres de clé avancés" en haut. 6. Enfin

Shift est une touche Maj du clavier, également appelée touche Maj du clavier, située dans le coin inférieur gauche du clavier ; la touche Maj a des fonctions telles que changer de méthode de saisie, basculer rapidement entre la demi-largeur et la pleine largeur, sélectionner des touches consécutives. fichiers et en supprimant directement des fichiers.

Cet article explique comment accéder facilement au mode sans échec dans le système Win11 en utilisant la touche de raccourci Maj+clic droit sur le bureau. Le mode sans échec est un mode de démarrage spécial utilisé pour diagnostiquer et résoudre les problèmes informatiques. Il permet de réparer le système lorsqu'il rencontre un défaut ou ne démarre pas normalement. Grâce aux conseils de cet article, les lecteurs peuvent apprendre à utiliser ce raccourci pour passer rapidement en mode sans échec dans Win11 afin de mieux entretenir et réparer le système informatique. 1. Cliquez [clic droit] sur un espace vide du bureau et dans l'élément de menu qui s'ouvre, sélectionnez [Nouveau - Document texte] 2. Créez une nouvelle fenêtre de document texte et entrez le code suivant : WindowsRegistryEditorVersion5.00[ HKEY_CL

Microsoft a publié aujourd'hui la mise à jour préliminaire Win11Build23419 pour les membres du projet WindowsInsider dans le canal Dev. Outre de nombreuses améliorations telles que la nouvelle page des paramètres USB4 dans cette mise à jour, certaines nouvelles fonctions/fonctionnalités introduites par Microsoft n'ont pas été écrites dans le journal de mise à jour. Microsoft est sur le point d'introduire une nouvelle fonction/fonctionnalité dans Win11. Les utilisateurs peuvent utiliser la combinaison de raccourcis Win+Shift+R pour enregistrer l'écran. Cependant, cette fonction n'est pas encore efficace. Après avoir utilisé ce raccourci clavier, l'interface utilisateur de capture d'écran standard sera ouverte à la place de l'interface utilisateur d'enregistrement d'écran. Les internautes peuvent activer les nouvelles fonctions et fonctionnalités ci-dessus via l'outil ViveTool : 1. Téléchargez l'outil Vivetool depuis la page GitHub, puis

La protection des ordinateurs contre les attaques de type « shift backdoor » nécessite une combinaison de mesures de sécurité, notamment la mise à jour des systèmes, l'utilisation de mots de passe forts et d'une authentification multifacteur, une éducation à la sécurité, des pare-feu et des logiciels de sécurité, des sauvegardes régulières des données, des audits et une surveillance de la sécurité du réseau, ainsi qu'une politique et une politique de sécurité. gestion des autorisations. Grâce à ces mesures, vous pouvez réduire considérablement le risque d'attaques de « porte dérobée » sur votre système et assurer la sécurité de votre système informatique.
