ホームページ  >  記事  >  バックエンド開発  >  PHP関数の参照と戻り値

PHP関数の参照と戻り値

蓝冰凌z
蓝冰凌zオリジナル
2018-05-04 11:49:452151ブラウズ

php関数の参照はphpの変数参照と同じなので、今日は関数の戻り値の例をいくつか見ていきます。必要な方は一緒に見てみましょう。

まずコードを見てください:

<?php
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(); は、通常の関数呼び出しと何ら変わりません。理由: これは PHP の規則であり、$a=&test(); によって取得されるものは関数の参照戻りであると規定されています (PHP マニュアルには参照戻りが使用されると記載されています)。参照を見つけるために関数を使用したい場合は、関数が変数にバインドされている場合に使用する必要があります。) このナンセンスなため、私は長い間理解できませんでした。

上記の例を使用して説明すると、

$a=test() を使用して関数を呼び出すと、関数の値が $a に代入されるだけであり、関数の呼び出し時に $a に加えられた変更は $b には影響しません。 $a=&test() を介して関数を実行すると、その関数は $b を返す $b 変数のメモリ アドレスと $a 変数のメモリ アドレスを同じ場所にポイントすることであり、これと同等の結果が生成されます。 $a=&$b;" つまり、$a の値を変更すると、$b の値も変更されるため、

$a=&test();
$a=5;

を実行すると、$b の値は 5 になります。

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

公式の PHP サンプルを添付します:

$a=test() メソッド。関数を呼び出すには、単に使用します。関数の値は $a に割り当てられるだけであり、$a に対する変更は関数内の $b には影響しません。$a=&test() を通じて関数を呼び出す場合、その関数は次のようになります。 return $b in $b 変数のメモリ アドレスと $a 変数のメモリ アドレスは同じ場所を指しているため、「$a=&$b;」と同等の効果が得られます。したがって、$a の値も変更します。 $b.value の値を変更するため、

$a=&test();
$a=5;

を実行すると、$b の値は 5 になります。

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

公式の PHP サンプルを添付します:

//This is the way how we use pointer to access variable inside the class.
<?php
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 = 'How';
$aa->out();
$d = 'Are';
$aa->out();
$d = 'You';
$aa->out();
?>
//the output is "HiHowAreYou"

のケースを読んだ後だと思います。この記事では関数の参照方法の詳細をすでにマスターしています。さらに興味深い情報については、PHP 中国語 Web サイトの他の関連記事に注目してください。

関連記事:

php関数の参照パラメータとパラメータ数

PHP - function_studynotes php関数のリファレンス php遅延関数 phpソート関数

php実行原理の徹底分析(2) ): 関数コンパイル php 暗号化関数 php 関数リファレンス php 遅延関数

以上がPHP関数の参照と戻り値の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。