Table des matières
Type de variable :
Implémentation interne :
String :
Référence :
Maison développement back-end tutoriel php [Apprentissage PHP] Types de données de PHP7

[Apprentissage PHP] Types de données de PHP7

Apr 18, 2019 pm 04:29 PM
php7 数据类型

Nom de la variable en PHP → zval, valeur de la variable → zend_value. Sa mémoire variable est gérée via le comptage de références. En PHP7, le comptage de références se fait dans la structure de valeurs.

Type de variable :

Fichier d'en-tête dans le code source PHP/zend/zend_types.h

Implémentation interne :

PHP représente une variable via la structure zval, et les valeurs de variables de différents types sont représentées via une union intégrée dans zval, c'est-à-dire zend_value.

zend_value est une union, son code est le suivant :

ast Les types tels que , ptr et zv ne sont utilisés que par le noyau lui-même.

String :

PHP définit une structure distincte pour les chaînes : zend_string. Dans zend_value, str pointe vers la structure spécifique.

La val qui stocke le contenu des chaînes est spéciale.

val n'utilise pas le type char*. L'allocation de chaîne est similaire à ceci : malloc(sizeof(zend_sting)+string length), ce qui signifie que plus de mémoire sera allouée pour stocker le contenu de la chaîne. la position de la mémoire supplémentaire dans le bloc est val.

L'avantage est qu'il permet d'économiser une allocation de mémoire (char*) et est plus utile pour la gestion de la mémoire.

L'octet supplémentaire dans val (val[1] au lieu de val[0] dans la structure) est utilisé pour stocker le dernier caractère de la chaîne stockée"

Solution : enchaînez les buckets en conflit dans une liste chaînée, c'est-à-dire que la table de mappage intermédiaire mappe une liste chaînée de bucket au lieu d'un bucket. Lors de la recherche, vous devez parcourir cette liste chaînée et comparer les clés une par une pour trouver la liste chaînée. élément cible.

HashTable enregistrera l'emplacement de stockage des éléments en conflit avec lui dans le tableau arData.

Lors de la définition de la valeur de mappage, on constate que la position à définir dans la table de mappage intermédiaire a été occupée par l'élément précédemment inséré (la valeur n'est pas égale à le -1 initialisé), puis il enregistrera la valeur existante dans le bucket nouvellement inséré (c'est-à-dire u2.next=0 après l'insertion de c), puis mettra à jour la valeur dans la table de mappage vers l'emplacement de stockage du nouveau bucket. (c'est-à-dire la valeur dans la table de mappage : 2).

Référence :

Une référence est une structure qui pointe vers d'autres types, similaire au concept de pointeurs en langage C. Lorsqu'une variable de type référence est modifiée, la modification sera reflétée dans la variable référencée réelle.

En PHP, une variable de référence est générée via l'opérateur &, comme $b = &$a. Lors de l'exécution, une structure zend_reference est d'abord allouée à la variable opérée par &. Un zval est intégré et la valeur de ce zval pointe vers la valeur du zval d'origine. Ensuite, le type du zval d'origine est modifié en IS_REFERENCE et la valeur du zval d'origine pointe vers la structure zend_reference nouvellement créée.

Exemple :


$a = date("Y-m");$b = &$a;
Copier après la connexion

$a est une chaîne, Convertissez-le en type référence via &$a et affectez-le à $b. Après la conversion, le type de $a passe de IS_STRING à IS_REFERENCE, et la valeur de $a est également convertie en une structure zend_reference, qui pointe vers l'original. chaîne.

$a et $b pointent indirectement vers la valeur réelle.

Soyez prudent lorsque vous utilisez des références. Les références ne peuvent être générées que via & et ne peuvent pas être transmises via une affectation.

Comme dans l'exemple ci-dessus, si $b est affecté à d'autres variables, alors la valeur transmise à la nouvelle variable sera la valeur de la référence réelle, pas la référence elle-même.


$a = date("Y-m");$b = &$a;$c = $b;   //如果想让$c也引用指向$a/$b引用的值,则:$c = &$b
Copier après la connexion

Cours 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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Quel type de données doit être utilisé pour le champ sexe dans la base de données MySQL ? Quel type de données doit être utilisé pour le champ sexe dans la base de données MySQL ? Mar 14, 2024 pm 01:21 PM

Dans une base de données MySQL, les champs de genre peuvent généralement être stockés en utilisant le type ENUM. ENUM est un type d'énumération qui nous permet d'en sélectionner une comme valeur d'un champ parmi un ensemble de valeurs prédéfinies. ENUM est un bon choix pour représenter une option fixe et limitée comme le sexe. Examinons un exemple de code spécifique : supposons que nous ayons une table appelée « utilisateurs » qui contient des informations sur l'utilisateur, y compris son sexe. Maintenant, nous voulons créer un champ pour le genre, nous pouvons concevoir la structure du tableau comme ceci : CRE

Quel est le meilleur type de données pour les champs de genre dans MySQL ? Quel est le meilleur type de données pour les champs de genre dans MySQL ? Mar 15, 2024 am 10:24 AM

Dans MySQL, le type de données le plus approprié pour les champs de genre est le type d'énumération ENUM. Le type d'énumération ENUM est un type de données qui permet de définir un ensemble de valeurs possibles. Le champ genre est adapté à l'utilisation du type ENUM car le genre n'a généralement que deux valeurs, à savoir masculin et féminin. Ensuite, j'utiliserai des exemples de code spécifiques pour montrer comment créer un champ de genre dans MySQL et utiliser le type d'énumération ENUM pour stocker les informations de genre. Voici les étapes : Tout d'abord, créez une table nommée utilisateurs dans MySQL, y compris

Que dois-je faire si le plug-in est installé dans php7.0 mais qu'il indique toujours qu'il n'est pas installé ? Que dois-je faire si le plug-in est installé dans php7.0 mais qu'il indique toujours qu'il n'est pas installé ? Apr 02, 2024 pm 07:39 PM

Pour résoudre le problème du plugin n'affichant pas installé dans PHP 7.0 : Vérifiez la configuration du plugin et activez le plugin. Redémarrez PHP pour appliquer les modifications de configuration. Vérifiez les autorisations du fichier du plugin pour vous assurer qu'elles sont correctes. Installez les dépendances manquantes pour garantir le bon fonctionnement du plugin. Si toutes les autres étapes échouent, reconstruisez PHP. D'autres causes possibles incluent des versions de plugin incompatibles, le chargement d'une mauvaise version ou des problèmes de configuration PHP.

Carte mentale de la syntaxe Python : compréhension approfondie de la structure du code Carte mentale de la syntaxe Python : compréhension approfondie de la structure du code Feb 21, 2024 am 09:00 AM

Python est largement utilisé dans un large éventail de domaines grâce à sa syntaxe simple et facile à lire. Il est crucial de maîtriser la structure de base de la syntaxe Python, à la fois pour améliorer l’efficacité de la programmation et pour acquérir une compréhension approfondie du fonctionnement du code. À cette fin, cet article fournit une carte mentale complète détaillant divers aspects de la syntaxe Python. Variables et types de données Les variables sont des conteneurs utilisés pour stocker des données en Python. La carte mentale affiche les types de données Python courants, notamment les entiers, les nombres à virgule flottante, les chaînes, les valeurs booléennes et les listes. Chaque type de données a ses propres caractéristiques et méthodes de fonctionnement. Opérateurs Les opérateurs sont utilisés pour effectuer diverses opérations sur les types de données. La carte mentale couvre les différents types d'opérateurs en Python, tels que les opérateurs arithmétiques, ratio

Quel est le meilleur choix de type de données pour le champ de genre dans MySQL ? Quel est le meilleur choix de type de données pour le champ de genre dans MySQL ? Mar 14, 2024 pm 01:24 PM

Lors de la conception de tables de base de données, le choix du type de données approprié est très important pour l'optimisation des performances et l'efficacité du stockage des données. Dans la base de données MySQL, il n'existe pas vraiment de meilleur choix pour le type de données pour stocker le champ de genre, car le champ de genre n'a généralement que deux valeurs : masculin ou féminin. Mais pour des raisons d’efficacité et de gain de place, nous pouvons choisir un type de données approprié pour stocker le champ genre. Dans MySQL, le type de données le plus couramment utilisé pour stocker les champs de genre est le type d'énumération. Un type énumération est un type de données qui peut limiter la valeur d'un champ à un ensemble limité.

Explication détaillée de la façon d'utiliser le type booléen dans MySQL Explication détaillée de la façon d'utiliser le type booléen dans MySQL Mar 15, 2024 am 11:45 AM

Explication détaillée de l'utilisation des types booléens dans MySQL MySQL est un système de gestion de bases de données relationnelles couramment utilisé dans les applications pratiques, il est souvent nécessaire d'utiliser des types booléens pour représenter des valeurs logiques vraies et fausses. Il existe deux méthodes de représentation de type booléen dans MySQL : TINYINT(1) et BOOL. Cet article présentera en détail l'utilisation des types booléens dans MySQL, y compris la définition, l'affectation, la requête et la modification des types booléens, et l'expliquera avec des exemples de code spécifiques. 1. Le type booléen est défini dans MySQL et peut être

Guide FAQ de l'environnement serveur PHP : résoudre rapidement les problèmes courants Guide FAQ de l'environnement serveur PHP : résoudre rapidement les problèmes courants Apr 09, 2024 pm 01:33 PM

Les solutions courantes pour les environnements de serveur PHP consistent à s'assurer que la version correcte de PHP est installée et que les fichiers pertinents ont été copiés dans le répertoire du module. Désactivez SELinux temporairement ou définitivement. Vérifiez et configurez PHP.ini pour vous assurer que les extensions nécessaires ont été ajoutées et configurées correctement. Démarrez ou redémarrez le service PHP-FPM. Vérifiez les paramètres DNS pour les problèmes de résolution.

Introduction à la syntaxe de base et aux types de données du langage C Introduction à la syntaxe de base et aux types de données du langage C Mar 18, 2024 pm 04:03 PM

Le langage C est un langage de programmation informatique largement utilisé, efficace, flexible et puissant. Pour maîtriser la programmation en langage C, vous devez d’abord comprendre sa syntaxe de base et ses types de données. Cet article présentera la syntaxe de base et les types de données du langage C et donnera des exemples. 1. Syntaxe de base 1.1 Commentaires En langage C, les commentaires peuvent être utilisés pour expliquer le code afin d'en faciliter la compréhension et la maintenance. Les commentaires peuvent être divisés en commentaires sur une seule ligne et en commentaires sur plusieurs lignes. //Ceci est un commentaire sur une seule ligne/*Ceci est un commentaire sur plusieurs lignes*/1.2 Mot clé Langage C

See all articles