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)

青灯夜游
Libérer: 2023-04-09 20:48:02
avant
3288 Les gens l'ont consulté

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
Copier après la connexion

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

<?php
    function test(&$a){
        $a = $a + 100;
    }
    $b = 1;
    test($b);
    var_dump($b);//101
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion
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!

Étiquettes associées:
php
source:csdn.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal