Maison >développement back-end >tutoriel php >Explication détaillée du passage de référence et du retour de fonctions en PHP (avec code)

Explication détaillée du passage de référence et du retour de fonctions en PHP (avec code)

青灯夜游
青灯夜游avant
2021-04-02 18:16:543346parcourir

Cet article vous amènera à comprendre les références de PHP et à présenter en détail le passage de références et le retour de références des fonctions. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Explication détaillée du passage de référence et du retour de fonctions en PHP (avec code)

Référence PHP (c'est-à-dire ajouter une esperluette devant une variable, une fonction, un objet, etc.)

est cité en PHP Signification : différents noms accèdent au même contenu de variable.
est différent des pointeurs en langage C. Le pointeur en langage C stocke le contenu de la variable et l'adresse stockée en mémoire.

1. Référence de variable

La référence PHP vous permet d'utiliser deux variables pour pointer vers le même contenu

<?php
    $a = &#39;abc&#39;;
    $b = &$a;
    var_dump($a,$b);//均为&#39;abc&#39;
    $b = 123;
    var_dump($a,$b);//均为123

2. par référence (appel par adresse)

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

Ce que $b transmet à la fonction est en fait l'adresse mémoire où se trouve le contenu de la variable de $b. Elle peut être modifiée en modifiant la valeur de $a. dans la fonction. La valeur de $b

Remarque :

N'ajoutez pas le symbole & devant $b dans le "test($" ci-dessus. b);", mais dans la fonction In "call_user_func_array", si vous souhaitez passer des paramètres par référence, vous avez besoin du symbole &

<?php
    function test(&$a){
        $a = $a + 10;
    }
    $b = 1;
    call_user_func_array(&#39;test&#39;,array(&$b));
    var_dump($b);//11

3. La référence de la fonction renvoie

🎜>

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

de cette façon $ Ce que a=test(); n'obtient pas un retour de référence de fonction, ce qui n'est pas différent d'un appel de fonction ordinaire. L'appel d'une fonction dans la méthode $a=test() attribue uniquement la valeur de la fonction à $a, et toute modification apportée à $a n'affectera pas $b dans la fonction. Que diriez-vous d'appeler la fonction dans $a=&test(. ) ? Sa fonction est de pointer l'adresse mémoire de la variable $b en retour $b au même endroit que l'adresse mémoire de la variable $a.

Les variables statiques sont utilisées ici pour permettre à chacun de comprendre le retour de référence de la fonction. En fait, le retour de référence de la fonction est principalement utilisé dans les objets :

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
Apprentissage 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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer