struct _zval_struct
{
zvalue_value value; //變數的值
zend_uint refcount; //變數被引用的次數
zend_uchar type; //變數的類型
zend_uchar is_ref; //變數的分離
};
{
zvalue_value value; //變數的值
zend_uint refcount; //變數被引用的次數
zend_uchar type; //變數的類型
zend_uchar is_ref; //變數的分離
};
zend_uint refcount-以下是取得變數被引用次數的方式:
$var = 1;
debug_zval_dump($var);
$var_dup = $var;
debug_zval_dump($var);
由於function的參數引用也會被計算在內,所以輸出的結果是: debug_zval_dump($var);
$var_dup = $var;
debug_zval_dump($var);
refcount(2)
refcount(3)
zend_uchar is_ref-以下是變數分離的作用:
$var = "laruence";
$var_ref = &$var;
$var_ref = 1;
執行後,$var也會被修改為1,當以上第二行被執後,$var的zval中的refcount會變成2,而is_ref將會變成1,當第三行執行時,php將會檢查$var_ref的zval中的is_ref,如果是1,就不做變數分離。
$var_ref = &$var;
$var_ref = 1;
沒有留言:
張貼留言