这篇文章主要为大家详细介绍了PHP利用原理之变量分离/引用(Variables Separation)的简单示例,具有一定的参考价值,可以用来参考一下。
感兴趣的小伙伴,下面一起跟随四海网的小玲来看看吧!
首先我们回顾一下zval的结构:
代码如下:
struct _zval_struct {
/* Variable information */
zvalue_value value; /* value */
zend_uint refcount;
zend_uchar type; /* active type */
zend_uchar is_ref;
};
代码如下:
<?php
/* 四海网 www.q1010.com */
$var = "laruence";
$var_dup = $var;
unset($var);
?>
代码如下:
<?php
/* 四海网 www.q1010.com */
$var = 1;
$var_dup = $var;
?>
代码如下:
<?php
/* 四海网 www.q1010.com */
$var = 1;
debug_zval_dump($var);
$var_dup = $var;
debug_zval_dump($var);
?>
输出:
long(1) refcount(2)
long(1) refcount(3
代码如下:
<?php
/* 四海网 www.q1010.com */
$var = "laruence";
$var_dup = $var;
unset($var);
debug_zval_dump($var_dup);
?>
输出:
string(8) "laruence" refcount(2
代码如下:
<?php
/* 四海网 www.q1010.com */
$var = "laruence";
$var_dup = $var;
$var = 1;
?>
代码如下:
<?php
/* 四海网 www.q1010.com */
$var = "laruence";
$var_dup = $var;
$var = 1;
debug_zval_dump($var);
debug_zval_dump($var_dup);
?>
输出:
long(1) refcount(2)
string(8) "laruence" refcount(2
代码如下:
<?php
/* 四海网 www.q1010.com */
$var = "laruence";
$var_ref = &$var;
$var_ref = 1;
?>
代码如下:
if((*val)->is_ref || (*val)->refcount<2){
//不执行Separation
... ;//process
}
代码如下:
<?php
/* 四海网 www.q1010.com */
$var = "laruence";
$var_dup = $var;
$var_ref = &$var;
?>
代码如下:
<?php
/* 四海网 www.q1010.com */
$var = "laruence";
$var_dup = &$var;
debug_zval_dump($var);
?>
输出:
string(8) "laruence" refcount(1
本文来自:http://www.q1010.com/173/14884-0.html
注:关于PHP利用原理之变量分离/引用(Variables Separation)的简单示例的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。
关键词:
四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。