PHP reference & detailed explanation_PHP tutorial
A simple ampersand in PHP can lead to a large article. Today we will briefly talk about the usage of variable references and parameter value transfer in PHP. I hope beginners will read and refer to this article.
What $a=test(); gets in this way is not actually a function reference return. It is no different from an ordinary function call. As for the reason: This is the regulation of PHP
PHP stipulates that what is obtained through $a=&test(); is the reference return of the function
As for what is a reference return (the PHP manual says: Reference return is used when you want to use a function to find which variable the reference should be bound to.) This nonsense made me unable to understand it for a long time
Using the above example to explain it is
Calling a function using $a=test() only assigns the value of the function to $a, and any changes to $a will not affect $b
in the function.
When calling a function through $a=&test(), its function is to point the memory address of the $b variable in return $b and the memory address of the $a variable to the same place
That is to say, the effect equivalent to this is produced ($a=&b;), so changing the value of $a also changes the value of $b, so after executing
The code is as follows | Copy code | ||||
$a=&test();
|
Static variables are used here to let everyone understand the reference return of functions. In fact, the reference return of functions is mostly used in objects
Object reference
The above code is the effect of running in PHP5
In PHP5, object copying is achieved through references. In the above column, $b=new a; $c=$b; is actually equivalent to $b=new a; $c=&$b;
The role of quotation
Unquote
代码如下 | 复制代码 |
$a = 1; |
The code is as follows | Copy code | ||||
$a = 1;
$b =& $a;
|
The code is as follows | Copy code |
$var =& $GLOBALS["var"];<🎜> ?> |
This means that, for example, unset $var will not unset a global variable.
$this
In an object method, $this is always a reference to the object that calls it.
//Another little interlude below
The address pointing (similar to a pointer) function in PHP is not implemented by the user himself, but is implemented by the Zend core. The reference in PHP adopts the principle of "copy-on-write", which means that unless a write operation occurs, it points to the same address. Variables or objects will not be copied.
In layman terms
1: If there is the following code
In fact, at this time, $a and $b both point to the same memory address, rather than $a and $b occupying different memories
The code is as follows
|
Copy code
|
||||
$source="110"; $a=$source;$b=&$source; $source="120";echo $a."rn",$b;
This is a problem with PHP’s reference operator &. Because & is applied to variable $b when assigning value, $b does not copy “110” to itself but directly points to the nest of $source. From now on, $ The source is his $b. No matter how $source changes, it will lead to changes in $b - much like the relationship between a host and two monitors. Since this is the relationship, changes in $b will of course lead to changes in $source
This is a problem with PHP’s reference operator &. Because & is applied to variable $b when assigning value, $b does not copy “110” to itself but directly points to the nest of $source. From now on, $ The source is his $b. No matter how $source changes, it will lead to changes in $b - much like the relationship between a host and two monitors. Since this is the relationship, changes in $b will of course lead to changes in $source | Output result: 122, you know, these two variables are one "person" from now on, don't bully them!
In fact, this operator is more used in database connections, because when we create a database connection object, we often only need one, and too many are useless.

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.
