ホームページ  >  記事  >  バックエンド開発  >  PHPリファレンスリターンとdereference_PHPチュートリアルの詳しい説明

PHPリファレンスリターンとdereference_PHPチュートリアルの詳しい説明

WBOY
WBOYオリジナル
2016-07-21 15:07:28751ブラウズ

1. 参照リターン
参照リターンは、関数を使用して参照をバインドする必要がある変数を見つけたい場合に使用します。パフォーマンスを向上させるために戻り参照を使用しないでください。エンジンはそれ自体を最適化するのに十分な機能を備えています。正当な技術的理由がある場合にのみ参照を返してください。参照を返すには、この構文を使用してください:

コピーコードコードは次のとおりです。 value;
}
}
$obj = new foo;
$myValue = &$obj->getValue(); // $myValue は $obj->value への参照、つまり 42.
$obj - >value = 2;
echo $myValue; // $obj->value の新しい値、つまり 2.
?>


上記は 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 **注意**
// $ の値b は 5 になります
$a = test (); //出力 $b の値は: 6 **注意**
?>



$a = test()
ただし、関数を定義すると、は参照返却メソッドですが、これを使うと通常の状態で関数を呼び出すと、その関数は通常の関数と同じなので、結果は 1, 2


$a = &test()
この呼び出しメソッドは参照による戻りであり、これは $a = &$ b に似ており、2 番目の文では $a = 5 が設定されます。これは、変数 $b = 5 を変更するのと同じです。最後の文で得られた 6 は、簡単に計算できます。理解する!
パラメータの受け渡しとは異なり、ここでは両方の場所で & 記号を使用する必要があります。通常のコピーではなく参照が返されることを示し、また $a が通常の代入ではなく参照としてバインドされていることを示します。
注:
return ($this->value); のような関数から参照を返そうとした場合、参照される変数ではなく式の結果を返そうとしているため、これは機能しません。 。参照変数を返すことができるのは関数からのみであり、他に方法はありません。コードが動的式または new 演算子の結果を返そうとすると、PHP 4.4.0 および PHP 5.1.0 以降では E_NOTICE エラーが発行されます。

2. 参照の解除
参照の設定を解除すると、変数名と変数の内容の間のバインドが解除されるだけです。これは、変数の内容が破壊されることを意味するものではありません。例:

コードをコピー
コードは次のとおりです:

$a = 1;$b =& $a;unset($a);?>

未設定の $b はなく、$a だけです。
これと Unix のリンク解除呼び出しを類推すると、理解が容易になるかもしれません。




http://www.bkjia.com/PHPjc/327547.html

www.bkjia.comtru​​e

http://www.bkjia.com/PHPjc/327547.html技術記事 1. 参照リターン 参照リターンは、関数を使用して参照をバインドする必要がある変数を検索する場合に使用します。パフォーマンスを向上させるために戻り参照を使用しないでください。エンジンは自動的に最適化するほど賢いので...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。