ホームページ  >  記事  >  バックエンド開発  >  PHPの関数の参照渡しと戻り方を詳しく解説(コード付き)

PHPの関数の参照渡しと戻り方を詳しく解説(コード付き)

青灯夜游
青灯夜游転載
2021-04-02 18:16:543188ブラウズ

この記事では、PHP の参照を理解し、関数の参照の受け渡しと参照の戻りについて詳しく紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。

PHPの関数の参照渡しと戻り方を詳しく解説(コード付き)

php への参照 (つまり、変数、関数、オブジェクトなどの前にアンパサンドを追加します)

PHP での参照 意味: 異なる名前が同じ変数の内容にアクセスします。
C言語のポインタとは異なります。 C言語におけるポインタは変数の内容とメモリ上に格納されているアドレスを格納します。

1. 変数リファレンス

PHP リファレンスでは、2 つの変数を使用して同じコンテンツを指すことができます

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

2. 関数パス参照による (アドレスによる呼び出し)

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

$b が関数に渡すものは、実際には $b の変数内容が配置されているメモリ アドレスであり、これは $a の値を変更することで変更できます。 $b

注:

上記の「test($b);」の $b の前にアンパサンドを追加しないでください。 " ですが、関数内 "call_user_func_array" では、パラメータを参照渡ししたい場合は、& 記号

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

3 が必要です。関数の参照は # を返します。 ##

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

このように$ a=test(); が実際に取得するのは関数参照の戻りではなく、通常の関数呼び出しと何ら変わりません。 $a=test() メソッドで関数を呼び出すと、関数の値が $a に代入されるだけであり、$a に対する変更は関数内の $b には影響しません。$a=&test() メソッドで関数を呼び出すのはどうでしょうか。 ) メソッド? その機能は、戻り値 $b のメモリ アドレスを $a 変数のメモリ アドレスと同じ場所にポイントすることです。

静的変数は、誰もが関数の参照戻り値を理解できるようにするためにここで使用されています。実際、関数の参照戻り値は主にオブジェクトで使用されます:

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

推奨される学習: "

PHP ビデオ チュートリアル

以上がPHPの関数の参照渡しと戻り方を詳しく解説(コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。