PHP5で、引数として渡されたとき、または変数に割り当てられたときに、文字列が参照またはコピーされますか?
2 に答える
7
関数は、この質問に答えるのdebug_zval_dump()
に役立つ場合があります。
たとえば、コードの次の部分を実行すると:
$str = 'test';
debug_zval_dump($str); // string(4) "test" refcount(2)
my_function($str);
debug_zval_dump($str); // string(4) "test" refcount(2)
function my_function($a) {
debug_zval_dump($a); // string(4) "test" refcount(4)
$plop = $a . 'glop';
debug_zval_dump($a); // string(4) "test" refcount(4)
$a = 'boom';
debug_zval_dump($a); // string(4) "boom" refcount(2)
}
次の出力が得られます。
string(4) "test" refcount(2)
string(4) "test" refcount(4)
string(4) "test" refcount(4)
string(4) "boom" refcount(2)
string(4) "test" refcount(2)
だから、私は言うだろう:
- 文字列は、関数に渡されると「参照カウント」されます(そして、おそらく、変数に割り当てられると)
- しかし、PHPは書き込み時にコピーすることを忘れないでください
詳細については、次のリンクを参考にしてください。
于 2011-03-11T20:51:59.257 に答える
1
They are copies or dereferenced.
于 2011-03-11T20:50:59.083 に答える