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
3267 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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!