Inhaltsverzeichnis
回复讨论(解决方案)
Heim Backend-Entwicklung PHP-Tutorial 变量引用计数问题

变量引用计数问题

Jun 23, 2016 pm 01:49 PM
变量 引用

变量引用就让人弄得走火入魔
什么引用、分离、写时复制,写时改变.....
比如:

<?php$a = 1;$b = & $a;xdebug_debug_zval('a');debug_zval_dump($a);/*结果b:(refcount=2, is_ref=1),int 1long(1) refcount(1)*/
Nach dem Login kopieren

refcount测试出来结果不一样,xdebug准还是内置的debug_zval_dump准?


回复讨论(解决方案)

调用 debug_zval_dump($a); 时候形参和$a进行了分离   debug_zval_dump调用可参考下面的情况

$a= 1;

$b= &$a

$c=$a

参考 http://www.laruence.com/2008/09/19/520.html

参考 http://www.laruence.com/2008/09/19/520.html


 正是看了这篇文章才有的问题

两个函数的报告中的 refcount 不是一个意思
请不要被一知半解的文章迷惑了

两个函数的报告中的 refcount 不是一个意思
请不要被一知半解的文章迷惑了



那分别是什么意思呢?

这两个函数不都是用来查看引用计数的吗

这两个函数不都是用来查看引用计数的吗



皆是查看应用计数
debug_zval_dump($a);  请用引用方式debug_zval_dump(&$a); 因为你这种调用和下面情况一样 会发生读写分离 $c 已经和$a分离

$a= 1;
$b= &$a
$c=$a

xdebug_debug_zval是真是的引用计数   而debug_zval_dump因为给它传参 所以是引用计数+1




Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Eine Anleitung zur Verwendung von Windows 11- und 10-Umgebungsvariablen für die Profilerstellung Eine Anleitung zur Verwendung von Windows 11- und 10-Umgebungsvariablen für die Profilerstellung Nov 01, 2023 pm 08:13 PM

Umgebungsvariablen sind der Pfad zum Speicherort (oder zur Umgebung), an dem Anwendungen und Programme ausgeführt werden. Sie können vom Benutzer erstellt, bearbeitet, verwaltet oder gelöscht werden und sind nützlich bei der Verwaltung des Verhaltens bestimmter Prozesse. So erstellen Sie eine Konfigurationsdatei, um mehrere Variablen gleichzeitig zu verwalten, ohne sie unter Windows einzeln bearbeiten zu müssen. So verwenden Sie Profile in Umgebungsvariablen Windows 11 und 10 Unter Windows gibt es zwei Sätze von Umgebungsvariablen – Benutzervariablen (gilt für den aktuellen Benutzer) und Systemvariablen (gilt global). Mit einem Tool wie PowerToys können Sie jedoch eine separate Konfigurationsdatei erstellen, um neue und vorhandene Variablen hinzuzufügen und alle auf einmal zu verwalten. So geht's: Schritt 1: Installieren Sie PowerToysPowerTo

So verwenden Sie Anführungszeichen in Apple Notes So verwenden Sie Anführungszeichen in Apple Notes Oct 12, 2023 pm 11:49 PM

In iOS 17 und macOS Sonoma hat Apple neue Formatierungsoptionen für Apple Notes hinzugefügt, darunter Anführungszeichen und einen neuen Monostyle-Stil. Hier erfahren Sie, wie Sie sie verwenden. Mit zusätzlichen Formatierungsoptionen in Apple Notes können Sie Ihren Notizen jetzt Anführungszeichen hinzufügen. Das Format der Blockzitate erleichtert das visuelle Versetzen von Textabschnitten mithilfe der Anführungszeichenleiste links vom Text. Tippen/klicken Sie einfach auf die Formatschaltfläche „Aa“ und wählen Sie die Option „Blockzitat“ aus, bevor Sie etwas eingeben oder wenn Sie sich in der Zeile befinden, die Sie in ein Blockzitat umwandeln möchten. Diese Option gilt für alle Texttypen, Stiloptionen und Listen, einschließlich Checklisten. Im selben Menü „Format“ finden Sie die neue Option „Einzelstil“. Dies ist eine Überarbeitung der vorherigen „gleichbreiten“

C++-Kompilierungsfehler: undefinierte Referenz, wie kann man ihn lösen? C++-Kompilierungsfehler: undefinierte Referenz, wie kann man ihn lösen? Aug 21, 2023 pm 08:52 PM

C++ ist eine beliebte Programmiersprache, aber während der Verwendung tritt häufig der Kompilierungsfehler „undefinierte Referenz“ auf, der große Probleme bei der Programmentwicklung mit sich bringt. In diesem Artikel wird die Lösung des Fehlers „Undefinierte Referenz“ sowohl hinsichtlich der Ursache als auch der Lösung erläutert. 1. Fehlerursache Wenn der C++-Compiler eine Quelldatei kompiliert, wird diese in zwei Phasen unterteilt: die Kompilierungsphase und die Verknüpfungsphase. Die Kompilierungsphase wandelt den Quellcode in den Quelldateien in Assemblercode um, während die Verknüpfungsphase verschiedene Quelldateien zu einer ausführbaren Datei kombiniert.

Strikter Modus für Variablen in PHP7: Wie können potenzielle Fehler reduziert werden? Strikter Modus für Variablen in PHP7: Wie können potenzielle Fehler reduziert werden? Oct 19, 2023 am 10:01 AM

In PHP7 wurde der strikte Modus eingeführt, der Entwicklern dabei helfen kann, potenzielle Fehler zu reduzieren. In diesem Artikel wird erklärt, was der strikte Modus ist und wie man den strikten Modus in PHP7 verwendet, um Fehler zu reduzieren. Gleichzeitig wird die Anwendung des strikten Modus anhand von Codebeispielen demonstriert. 1. Was ist der strikte Modus? Der strikte Modus ist eine Funktion in PHP7, die Entwicklern helfen kann, standardisierten Code zu schreiben und einige häufige Fehler zu reduzieren. Im strikten Modus gelten strenge Einschränkungen und Erkennungen für die Variablendeklaration, Typprüfung, Funktionsaufrufe usw. Passieren

Was sind Instanzvariablen in Java? Was sind Instanzvariablen in Java? Feb 19, 2024 pm 07:55 PM

Instanzvariablen in Java beziehen sich auf Variablen, die in der Klasse definiert sind, nicht in der Methode oder dem Konstruktor. Instanzvariablen werden auch Mitgliedsvariablen genannt. Jede Instanz einer Klasse verfügt über eine eigene Kopie der Instanzvariablen. Instanzvariablen werden während der Objekterstellung initialisiert und ihr Zustand wird während der gesamten Lebensdauer des Objekts gespeichert und beibehalten. Instanzvariablendefinitionen werden normalerweise an der Spitze der Klasse platziert und können mit einem beliebigen Zugriffsmodifikator deklariert werden, der öffentlich, privat, geschützt oder der Standardzugriffsmodifikator sein kann. Es hängt davon ab, was wir wollen

Mindmap der Python-Syntax: Vertiefendes Verständnis der Codestruktur Mindmap der Python-Syntax: Vertiefendes Verständnis der Codestruktur Feb 21, 2024 am 09:00 AM

Python wird aufgrund seiner einfachen und leicht lesbaren Syntax in einer Vielzahl von Bereichen häufig verwendet. Es ist von entscheidender Bedeutung, die Grundstruktur der Python-Syntax zu beherrschen, um sowohl die Programmiereffizienz zu verbessern als auch ein tiefes Verständnis für die Funktionsweise des Codes zu erlangen. Zu diesem Zweck bietet dieser Artikel eine umfassende Mindmap, die verschiedene Aspekte der Python-Syntax detailliert beschreibt. Variablen und Datentypen Variablen sind Container, die zum Speichern von Daten in Python verwendet werden. Die Mindmap zeigt gängige Python-Datentypen, einschließlich Ganzzahlen, Gleitkommazahlen, Zeichenfolgen, boolesche Werte und Listen. Jeder Datentyp hat seine eigenen Eigenschaften und Betriebsmethoden. Operatoren Operatoren werden verwendet, um verschiedene Operationen an Datentypen auszuführen. Die Mindmap deckt die verschiedenen Operatortypen in Python ab, z. B. arithmetische Operatoren und Verhältnisse

Welche Vorteile haben C++-Funktionen, die Referenztypen zurückgeben? Welche Vorteile haben C++-Funktionen, die Referenztypen zurückgeben? Apr 20, 2024 pm 09:12 PM

Zu den Vorteilen von Funktionen, die Referenztypen in C++ zurückgeben, gehören: Leistungsverbesserungen: Durch die Übergabe als Referenz wird das Kopieren von Objekten vermieden, wodurch Speicher und Zeit gespart werden. Direkte Änderung: Der Aufrufer kann das zurückgegebene Referenzobjekt direkt ändern, ohne es neu zuzuweisen. Einfachheit des Codes: Die Übergabe als Referenz vereinfacht den Code und erfordert keine zusätzlichen Zuweisungsvorgänge.

Wie erhalte ich Variablen aus der PHP-Methode mit Ajax? Wie erhalte ich Variablen aus der PHP-Methode mit Ajax? Mar 09, 2024 pm 05:36 PM

Die Verwendung von Ajax zum Abrufen von Variablen aus PHP-Methoden ist ein häufiges Szenario in der Webentwicklung. Durch Ajax kann die Seite dynamisch abgerufen werden, ohne dass die Daten aktualisiert werden müssen. In diesem Artikel stellen wir vor, wie man Ajax verwendet, um Variablen aus PHP-Methoden abzurufen, und stellen spezifische Codebeispiele bereit. Zuerst müssen wir eine PHP-Datei schreiben, um die Ajax-Anfrage zu verarbeiten und die erforderlichen Variablen zurückzugeben. Hier ist ein Beispielcode für eine einfache PHP-Datei getData.php:

See all articles