解决方案 »
- 弱弱的问一个问题:如何发布网站?
- 跪求解答,while嵌套if语句问题
- Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
- 求教:使用 $word = new COM("word.application")后用对象调用的方法在哪里有介绍
- 求微信公众平台代码的漏洞测试!
- 哪里有smarty和smartemplate和adodb下载?请达人指点
- 一个转换的问题!!!
- 如何判断用户连续三次的操作?
- 我有一些.class文件,在php中能否调用?怎么用?
- mysql直接插入中文不会出错但是php插入中文就不行不能插入
- 如何用preg_match_all解析这段字符
- php/关于rar文件的处理
{
public $k=0;
}
$test_s1=new Test_s();
$test_s2=$test_s1;
echo "test_s1:".$test_s1->k."<br />";
echo "test_s2:".$test_s2->k."<br />";
$test_s1->k++;
echo "test_s1:".$test_s1->k."<br />";
echo "test_s2:".$test_s2->k."<br />";显示的是:
test_s1:0
test_s2:0
test_s1:1
test_s2:1
还是说明两个变量指向同一内存的。
php 与编译型的语言不一样,变量并不直接存放于内存中。而是存放在由php引擎维护的一张表中所以 php 就没有了操作内存的“指针”,而是功能相似的“引用”
$b =& $a;
就是引用,他表示 $b 和 $a 共用一个变量表项的数据区在 php5 以前,对象和普通变量没有区别
而到了 php5 情况就有点变化了:所有对象都是以“引用”方式传递的
class Test_s
{
public $k=0;
}function foo($o) {
$o->k++;
}$test_s1 = new Test_s();
echo $test_s1->k , '<br />';//0foo($test_s1);
echo $test_s1->k , '<br />';//1
$b=&$a;//$a=new Cls_1(); $b为$a的一个引用,效果同上$b=$a;//$a=10; $b保存$a的一个副本,变量赋值后二者无关系
$b=&$a;//$a=10; $b为$a的一个引用,二者指向同一处实际数据