Home > Backend Development > PHP Tutorial > Detailed explanation of reference passing and return of functions in PHP (with code)

Detailed explanation of reference passing and return of functions in PHP (with code)

青灯夜游
Release: 2023-04-09 20:48:02
forward
3335 people have browsed it

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.

Detailed explanation of reference passing and return of functions in PHP (with code)

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 = &#39;abc&#39;;
    $b = &$a;
    var_dump($a,$b);//均为&#39;abc&#39;
    $b = 123;
    var_dump($a,$b);//均为123
Copy after login

2. Function Pass by reference (call by address)

<?php
    function test(&$a){
        $a = $a + 100;
    }
    $b = 1;
    test($b);
    var_dump($b);//101
Copy after login

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(&#39;test&#39;,array(&$b));
    var_dump($b);//11
Copy after login

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
Copy after login

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 = &#39;Hi&#39;;
    public function &get(){
        return $this->data;
    }
    public function out(){
        echo $this->data;
    }
}
$aa = new talker();
$d = &$aa->get();
$aa->out();
$d = &#39;How&#39;;
$aa->out();
$d = &#39;Are&#39;;
$aa->out();
$d = &#39;You&#39;;
$aa->out(); 
//输出为HiHowAreYou
Copy after login

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!

Related labels:
php
source:csdn.net
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template