- 论坛徽章:
- 0
|
关于PHP的引用,不管是手册上,还是书上写的都不是那么的易于理解。
今天dump一下不小心发现了点可能不是秘密的秘密。
写下来希望对大家有所帮助。
我们先看下图:
当 $b = & $a; 时 $a 会变成一个引用。所以 unset($a) 并不会影响 $b
以下是测试代码,留意&
<?php
do_tests('kg_sub_test_ref');
function kg_sub_test_ref_0() {
echo '$a = 1', "\n";
$a = 1;
var_dump(get_defined_vars());
# $a = int(1)
}
function kg_sub_test_ref_1() {
echo '$b = & $a', "\n";
$a = 1;
$b = & $a;
var_dump(get_defined_vars());
# $a = & int(1)
# 可以认为自动做了"$a = & $a;"
# $b = & int(1)
}
function kg_sub_test_ref_2() {
echo 'unset($a)', "\n";
$a = 1;
$b = & $a;
$c = & $b;
unset($a);
var_dump(get_defined_vars());
# $b = & int(1)
# $c = & int(1)
}
function kg_sub_test_ref_3() {
echo '$c = null', "\n";
$a = 1;
$b = & $a;
$c = & $b;
$c = null;
var_dump(get_defined_vars());
# $a = & NULL
# $b = & NULL
# $c = & NULL
}
function do_tests($test) {
$_ = get_defined_functions();
foreach ($_['user'] as $one) {
if (strpos($one, $test) !== false) {
$one();
}
}
}
?>
|
[ 本帖最后由 kinpoo 于 2008-5-5 14:30 编辑 ] |
|