PHP 参照の受け渡し、参照の戻り、逆参照、および設定解除
元のソース: http://hi.baidu.com/kashifs/blog/item/928379f254888cbea50f524a.html
?
PHP でのクォートとは、同じ変数の内容に異なる名前でアクセスすることを意味します。 これは C ポインター とは異なり、参照はシンボル テーブルのエイリアスです。 PHP では変数名と変数の内容が異なるため、同じ内容でも異なる名前が付けられることに注意してください。
?
?
参照渡し
function foo ( &$var ) {$var++;} foo ($a); // 注意在函数调用时没有引用符号 - 只有函数定义中有。光是函数定义就足够使参数通过引用来正确传递了
リファレンスリターン
function &init_users() { ... return $cls;} //使用引用返回,必须在两个地方都用&符号 $user = & init_users(); function &init_users() { ...return $cls;}
参照解除
参照の設定を解除すると、変数名と変数の内容の間のバインドが解除されるだけです。これは、変数の内容が破壊されることを意味するものではありません。
$a="hihaha"; $b= &$a; unset($b); echo$a;// shows "hihaha"
----------------------------------------------------- ------------------------
これは php の引用の例です。よく読んでください:
PHP でユーザー関数 内のグローバル変数の設定を解除すると、ローカル変数のみが破壊されますが、グローバル変数 は破壊されません。 (PHP4 以降、unset は関数ではなくなりましたが、 はステートメント になります)。 グローバル変数を破棄する必要がある場合はどうすればよいですか?これも非常に簡単です。 $GLOBALS 配列を使用して実装します。
< ?PHP function foo() { unset($GLOBALS['bar']); // 而不是unset($bar) } $bar = “something”; foo(); var_dump($bar); ?>
未設定の場合:
1. この関数は、変数値が占有するスペースが 256 バイトを超えた場合にのみメモリを解放します。
2. すべての変数がその値を指している場合のみです。アドレスは値) が破棄された後にのみ解放されます (1 の判定も実行する必要があります)
つまり、他の変数がバインドされているかどうかがチェックされ、存在する場合は解放されません。この例のように:
$a="hihaha"; $b= &$a; unset($b); echo$a;// shows "hihaha"
そのため、 メモリを解放するには $variable=null を使用することをお勧めします。
?現在の PHP スクリプトのメモリ使用量をテストする関数を指定します:
<?php echo memory_get_usage()."\n"; $a = str_repeat("A", 1000); echo memory_get_usage()."\n"; $b=&$a; //下面的内存大小不会变,unset只是解除$a的绑定 unset($a); echo memory_get_usage()."\n"; ?>
まだよくわかりません。こちらを参照してください: http://www.laruence.com/2011/03/04/1894.html