例 #1 新しい zval コンテナーを生成する
22b1e2c66391596059831b91757af08e
上記の例では、新しい変数 a が現在のスコープで生成されます。そして、型が文字列、値が新しい文字列の変数コンテナが生成されます。追加の 2 バイトの情報では、カスタム参照が生成されないため、「is_ref」はデフォルトで FALSE に設定されます。この変数コンテナを使用する変数は 1 つだけであるため、「refcount」は 1 に設定されます。インストールされている場合、「refcount」の値が 1 の場合、「is_ref」の値は常に FALSE になることに注意してください。 »Xdebug では、関数 xdebug_debug_zval() を呼び出すことで、「refcount」と「is_ref」の値を表示できます。
例 2 zval 情報を表示する
1452ac591027b5cd7f418f6659480060
a: (refcount=1, is_ref=0)='new string'変数を別の変数に代入すると、参照番号が追加されます。
例 3 zval の参照カウントを増やす
$a = "新しい文字列";
$b = $a;
xdebug_debug_zval( 'a' );
a: (refcount=2, is_ref=0)='new string'このとき、変数 a と変数 b には同じ変数コンテナが関連付けられているため、参照数は 2 になります。 PHP は生成された変数コンテナをコピーしません。変数コンテナは、「refcount」が 0 になると破棄されます。変数コンテナに関連付けられた変数がそのスコープを離れるとき (例: 関数の実行が終了するとき)、または関数 unset() が変数に対して呼び出されるとき、「refcount」 は破棄されます。次の例に示すように、1 ずつ減らされます。
例 4 参照カウントを減らす
$a = "新しい文字列";
$c = $b = $a;unset( $b, $c ); );
?>
上記のルーチンは次のように出力します。 unset($a); を実行すると、型と値を含む変数コンテナがメモリから削除されます。