php值和对象的值传递和引用传递
来源:互联网 发布:七天网络查询成绩登陆 编辑:程序博客网 时间:2024/06/06 19:08
在 PHP 中引用意味着用不同的名字访问同一个变量内容。这并不像 C 的指针:例如你不能对他们做指针运算,他们并不是实际的内存地址…… 查看引用不是什么了解更多信息。 替代的是,引用是符号表别名。注意在PHP 中,变量名和变量内容是不一样的, 因此同样的内容可以有不同的名字。最接近的比喻是 Unix 的文件名和文件本身——变量名是目录条目,而变量内容则是文件本身。引用可以被看作是 Unix 文件系统中的硬链接。
因为最近发现了对象用引用传递的时候,会有些微秒的变化,上代码看看
$v1 = 1;$v2 = $v1;echo '<b>变量初始状态(值传递)</b>';echo '$v1的值:'.$v1.',$v2的值是:'.$v2;echo "<br />";$v2 = 2;echo '<b>$v2赋值为2后的状态</b>';echo '$v1的值:'.$v1.',$v2的值是:'.$v2;echo "<br />";$v1 = 3;echo '<b>$v1赋值为3后的状态</b>';echo '$v1的值:'.$v1.',$v2的值是:'.$v2;echo "<br />";unset($v1);echo '<b>$v1销毁后的状态</b>';echo '$v2的值是:'.$v2;echo "<br />";echo "<hr />";$v3 = 1;$v4 = &$v3;echo '<b>变量初始状态(引用传递)</b>';echo '$v3的值:'.$v3.',$v4的值是:'.$v4;echo "<br />";$v3 = 2;echo '<b>$v3赋值为2后的状态</b>';echo '$v3的值:'.$v3.',$v4的值是:'.$v4;echo "<br />";unset($v3);echo '<b>$v3销毁后的状态</b>';echo '$v4的值是:'.$v4;echo "<br />";echo "<hr />";class test { public $v1 = 1; public $v2 = 2;}$t1 = new test();$t2 = $t1;echo '<b>对象初始状态(值传递)</b>';echo "<br />";echo '对象$t1: $t1->v1的值:'.$t1->v1.',$t1->v2的值是:'.$t1->v2;echo "<br />";echo '对象$t2: $t2->v1的值:'.$t2->v1.',$t2->v2的值是:'.$t2->v2;echo "<br />";$t1->v1 = 2;$t1->v2 = 3;echo '<b>$t1对象改变属性值后</b>';echo "<br />";echo '对象$t1: $t1->v1的值:'.$t1->v1.',$t1->v2的值是:'.$t1->v2;echo "<br />";echo '对象$t2: $t2->v1的值:'.$t2->v1.',$t2->v2的值是:'.$t2->v2;echo "<br />";$t1 = 123;echo '<b>$t1改变值类型后</b>';echo "<br />";echo '对象$t2: $t2->v1的值:'.$t2->v1.',$t2->v2的值是:'.$t2->v2;echo "<hr />";$t3 = new test();$t4 = &$t3;echo '<b>对象初始状态(引用传递)</b>';echo "<br />";echo '对象$t3: $t3->v1的值:'.$t3->v1.',$t3->v2的值是:'.$t3->v2;echo "<br />";echo '对象$t4: $t4->v1的值:'.$t4->v1.',$t4->v2的值是:'.$t4->v2;echo "<br />";$t3->v1 = 2;$t3->v2 = 3;echo '<b>$t1对象改变属性值后</b>';echo "<br />";echo '对象$t3: $t3->v1的值:'.$t3->v1.',$t3->v2的值是:'.$t3->v2;echo "<br />";echo '对象$t4: $t4->v1的值:'.$t4->v1.',$t4->v2的值是:'.$t4->v2;echo "<br />";$t3 = 123;echo '<b>$t1对象改变属性值后</b>';echo "<br />";echo '对象$t4: $t4->v1的值:'.$t4->v1.',$t4->v2的值是:'.$t4->v2;echo "<br />";
运行结果如下 :
会发现,对象的值传递的时候改变一个值,被赋值的变量对象也会被改变,因为php中每个对象会对应一个对象的编号,然后在指向数据的地址,所以,大家可以测试着看看,也就明白了
0 0
- php值和对象的值传递和引用传递
- php数组和对象的值传递和引用传递
- php的值传递和引用传递
- java对象引用传递和值传递的一些总结
- C++按值传递对象和传递引用的选择
- Java面向对象-方法的值传递和引用传递
- 引用传递和值传递的区别
- Java的值传递和引用传递
- js的值传递和引用传递
- 值传递和引用传递的区别
- java的引用传递和值传递
- java的引用传递和值传递
- 值传递和引用传递的区别
- 值传递和引用传递的区别
- 值传递和引用传递的区别
- 函数的值传递和引用传递
- Java的引用传递和值传递
- 值传递和引用传递的区别
- JAVA的abstract修饰符 && 接口interface用法 && 抽象类和interface的差别
- 什么是遗传算法?
- static 、self 、 parent
- Objective-C实现常用的4种排序算法
- 证书生成、应用及常见错误处理
- php值和对象的值传递和引用传递
- Spring Boot实战之单元测试
- coderforce#382div2
- 宽高的整理
- ftp传送文件
- sql之left join、right join、inner join的区别
- WEB架构师成长系列索引
- 矩阵乘法计算脚本代码(C#)
- Android异步处理二:使用AsyncTask异步更新UI界面