关于PHP的变量引用
2014-08-22 14:28
330 查看
变量的引用,其实就是不同名字的变量指向同一个内存地址的内容。
通俗了说,黄河也叫济水。指的是同一条河流,现代人都叫黄河,就相当于 “unset(济水)”,可是黄河是存在的,只是删掉了 济水 这个名字而已。
先秦时期的荀子在辩论“白马飞马”等哲学论题时就提出了名实之间划定界限,一物可有多名,而多名并非多物。
言归正传:
举例
<?php
$a = "123";
$b = &$a;
echo $b; //输出123;
echo $a; //输出123;
$b="456";
echo $a; // 输出456
?>
解释:当$b应用变量$a 时,$a与$b则指向了同一个内存地址,所以$a和$b输出了同一个结果。
当$b重新赋值时,则内存中的内容发生了变化,但是,$a和$b都没有被销毁,依然指向同一个地址,因此,$a输出456;
假设$b在重新复制之前被销毁,如下
<?php
$a = "123";
$b = &$a;
unset($b);
$b="456";
echo $a; // 输出123
?>
此时,相当于$b被重新定义并赋值,$b和$a则是两个地址指向的两个值,两者可以说是没有关系,所以,$a的值,没有变化。
通俗了说,黄河也叫济水。指的是同一条河流,现代人都叫黄河,就相当于 “unset(济水)”,可是黄河是存在的,只是删掉了 济水 这个名字而已。
先秦时期的荀子在辩论“白马飞马”等哲学论题时就提出了名实之间划定界限,一物可有多名,而多名并非多物。
言归正传:
举例
<?php
$a = "123";
$b = &$a;
echo $b; //输出123;
echo $a; //输出123;
$b="456";
echo $a; // 输出456
?>
解释:当$b应用变量$a 时,$a与$b则指向了同一个内存地址,所以$a和$b输出了同一个结果。
当$b重新赋值时,则内存中的内容发生了变化,但是,$a和$b都没有被销毁,依然指向同一个地址,因此,$a输出456;
假设$b在重新复制之前被销毁,如下
<?php
$a = "123";
$b = &$a;
unset($b);
$b="456";
echo $a; // 输出123
?>
此时,相当于$b被重新定义并赋值,$b和$a则是两个地址指向的两个值,两者可以说是没有关系,所以,$a的值,没有变化。
相关文章推荐
- php关于变量的引用机制
- PHP中关于在函数内引用全局变量的问题
- 一道关于php变量引用的面试题
- PHP:关于MYSQL双引号中引用PHP变量的问题
- 浅谈PHP中关于foreach使用引用变量的坑
- PHP中关于在函数内引用全局变量的问题
- 关于php变量的赋值和引用的区别
- 浅谈PHP中关于foreach使用引用变量的坑
- PHP关于foreach使用引用变量的坑
- 一道关于php变量引用的面试题
- C/C++中关于地址、指针和引用变量的学习笔记(七) : sizeof和typedef
- C/C++中关于地址、指针和引用变量的学习笔记(四) : 函数
- 关于PHP中变量的判定
- C/C++中关于地址、指针和引用变量的学习笔记(十) : 引用型变量
- 关于JavaScript中变量的相互引用
- PHP的foreach语句使用引用变量的问题
- C/C++中关于地址、指针和引用变量的学习笔记(八) : 命令行参数
- C/C++中关于地址、指针和引用变量的学习笔记(五) : 指针
- C/C++中关于地址、指针和引用变量的学习笔记(三) : 结构
- 关于php的引用