


Detailed explanation of reference passing and return of functions in PHP (with code)
This article will take you to understand the references of PHP and introduce in detail the reference passing and reference return of functions. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to everyone.
Reference to php (that is, adding an ampersand in front of a variable, function, object, etc.)
Referenced in PHP Meaning: different names access the same variable content.
It is different from pointers in C language. The pointer in C language stores the content of the variable and the address stored in the memory.
1. Variable reference
PHP reference allows you to use two variables to point to the same content
<?php $a = 'abc'; $b = &$a; var_dump($a,$b);//均为'abc' $b = 123; var_dump($a,$b);//均为123
2. Function Pass by reference (call by address)
<?php function test(&$a){ $a = $a + 100; } $b = 1; test($b); var_dump($b);//101
What $b passes to the function is actually the memory address where the variable content of $b is located, which can be changed by changing the value of $a in the function. Value of $b
Note:
Do not add the ampersand in front of $b in the above "test($b);", but in the function In "call_user_func_array", if you want to pass parameters by reference, you need the & symbol
<?php function test(&$a){ $a = $a + 10; } $b = 1; call_user_func_array('test',array(&$b)); var_dump($b);//11
3. The reference of the function returns
function &test() { static $b=0;//申明一个静态变量 $b=$b+1; echo $b; return $b; } $a=test();//这条语句会输出 $b的值 为1 $a=5; $a=test();//这条语句会输出 $b的值 为2 $a=&test();//这条语句会输出 $b的值 为3 $a=5; $a=test();//这条语句会输出 $b的值 为6
In this way$ What a=test(); actually gets is not a function reference return, which is no different from an ordinary function call. Calling a function in the $a=test() method only assigns the value of the function to $a, and any changes to $a will not affect $b in the function. How about calling the function in the $a=&test() method? Its function is to point the memory address of the $b variable in return $b to the same place as the memory address of the $a variable.
Static variables are used here to let everyone understand the reference return of the function. In fact, the reference return of the function is mostly used in objects:
class talker{ private $data = 'Hi'; public function &get(){ return $this->data; } public function out(){ echo $this->data; } } $aa = new talker(); $d = &$aa->get(); $aa->out(); $d = 'How'; $aa->out(); $d = 'Are'; $aa->out(); $d = 'You'; $aa->out(); //输出为HiHowAreYou
Recommended learning: "PHP Video Tutorial》
The above is the detailed content of Detailed explanation of reference passing and return of functions in PHP (with code). For more information, please follow other related articles on the PHP Chinese website!

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

AI Hentai Generator
Generate AI Hentai for free.

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

In this chapter, we will understand the Environment Variables, General Configuration, Database Configuration and Email Configuration in CakePHP.

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

To work with date and time in cakephp4, we are going to make use of the available FrozenTime class.

To work on file upload we are going to use the form helper. Here, is an example for file upload.

In this chapter, we are going to learn the following topics related to routing ?

CakePHP is an open-source framework for PHP. It is intended to make developing, deploying and maintaining applications much easier. CakePHP is based on a MVC-like architecture that is both powerful and easy to grasp. Models, Views, and Controllers gu

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

Validator can be created by adding the following two lines in the controller.
