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

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

青灯夜游
リリース: 2023-04-09 20:48:02
転載
3321 人が閲覧しました

この記事では、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 サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート