文章转载自
重庆PHP,原文地址:
http://www.php-chongqing.com/index.php/article/104
PHP提供了引用操作符(&),在PHP中引用的意思是用不同的名字访问同一个变量内容,PHP4和PHP5中的对象引用是有区别的。
$a = 8;
$b = $a;
echo '$a:' . $a; // 8
echo '$b:' . $b; // 8
$a = 12;
echo '$a:' . $a; // 12
echo '$b:' . $b; // 8
首先创建变量$a,把整数8赋值给$a,然后把$a赋给$b,这时候PHP创建一个$a的副本,再把这个副本赋给$b,通俗点说就是内存中产生了两个变量,变量的值都是8,这两个变量一个指向$a,一个指向$b,所以打印结果$a和$b都是12,接着我们将12赋给$a,然后再打印$a和$b,可以看到$a的值变成12了,而$b的值还是8,这个很容易理解,因为$a和$b是两个完全不相干的变量。
$a = 8;
$b &= $a;
echo '$a:' . $a; // 8
echo '$b:' . $b; // 8
$a = 12;
echo '$a:' . $a; // 12
echo '$b:' . $b; // 12
首先创建变量$a,把整数8赋值给$a,然后把$a赋给$b,注意是使用的&引用赋值,打印$a和$b,两个变量的均为8;接着我们把12赋给$a,再打印$a和$b,可以看到$b的值也变成12了。PHP的引用操作符(&),可以不让程序产生一个副本,$a和$b指向同一块内存区域,即$a和$b是同一个变量,所以当$a的值发生变化时,$b的值也会跟着发生变化。这就好比‘张三’,上学的时候同学们给取个绰号‘三娃’,无论是‘张三’还是‘三娃’所指的都是那一百多斤,都是指的同一个人。
在PHP4中,当你创建对象并将其赋值给其它变量时,PHP4总是会产生一个该对象的副本,将整个对象及所有内容复制过去。PHP4的这种对象处理方式非常的糟糕,复制对象会让程序占用更多的内存,复制对象往往还会引起一些莫名其妙的错误。这种糟糕的对象处理方式在PHP5中得到了改善,在PHP5中对象总是以引用的方式传递。
$user = new User();
$user->name = 'zhangsan';
$bing = $user;
$bing->name = 'bing.peng';
echo $user->name; // For PHP4: zhangsan For PHP5: bing.peng
在PHP4下运行上面的代码,打印出来的是:‘zhangsan’;在PHP5下打印结果为:‘bing.peng’,可以看到PHP5默认就是使用引用赋值,注意PHP5只是对象类型默认使用引用赋值,基本类型还是会产生副本,那么要在PHP5中复制对象,需要使用clone关键字来完成,如果想要在PHP4中得到同样的效果,我们就需要使用引用操作符,代码如下:
$user = new User();
$user->name = 'zhangsan';
$bing &= $user;
$bing->name = 'bing.peng';
echo $user->name;
分享到:
相关推荐
PHP中的引用提供了一种简单有效的方式来管理变量和数据。正确地使用引用不仅可以提高代码的性能,还可以帮助我们更好地组织和维护代码。理解引用的工作原理及其在不同场景下的应用,对于成为一名优秀的PHP开发者至关...
10. **引用传递**:PHP5中,函数参数默认为值传递,如果要实现引用传递,需要在参数前加`&`。 `phpf2f`工具可以帮助开发者快速定位并转换上述语法差异,但它并不能处理所有情况,因为有些PHP4的编程习惯在PHP5中...
),需要留意在PHP5及以上版本中,new运算符已经自动返回引用,所以在这些版本中使用=&来创建对象会产生一个解析错误。 当在函数内部使用global关键字声明全局变量引用时,该引用只在函数内部有效。如果要让这个...
总结一下,PHP引用的使用包括变量引用、函数引用传递、函数引用返回和对象引用。通过引用,我们可以用不同的名字访问同一变量内容,实现高效的数据操作。但在使用引用时需要注意,错误的引用可能会导致变量值的意外...
在PHP5中,文件和目录操作接口得到了优化,如文件读写、目录遍历、文件上传下载等功能。手册将指导开发者如何安全有效地进行这些操作。 **6. 数据库交互** PHP5支持多种数据库驱动,如MySQLi和PDO,提供了丰富的...
### PHP中的变量引用、函数引用和对象引用解析 #### 变量引用 在PHP中,变量引用是指两个或多个变量共享同一内存空间的情况。当一个变量通过引用赋值给另一个变量时,它们实际上指向相同的内存位置,而不是进行值的...
2. 引用和复制:PHP5中引入了引用的概念,不同于值的复制,引用是让两个变量指向内存中的同一块数据。这在处理大型数据结构或需要节省内存的情况下非常有用。 3. 错误和异常处理:PHP5改进了错误报告机制,引入了...
本文实例分析了php中引用&的用法。分享给大家供大家参考,具体如下: php的引用(就是在变量或者函数、对象等前面加上&符号) //最重要就是 删除引用的变量 ,只是引用的变量访问不了,但是内容并没有销毁 在PHP 中...
FPDF(Free PDF Generator)是一个用PHP编写的开源库,用于生成PDF文档。这个库的主要优点是它完全用PHP编写,无需...通过学习和理解`chinese.php`的工作原理,开发者能够更好地应对在PDF文档中处理中文字符的挑战。
在PHP编程语言中,面向对象编程(Object-Oriented Programming, OOP)是一种重要的编程范式,它使得代码更加结构化、易于维护和扩展。本教程将深入探讨PHP中的面向对象特性,特别是构造函数、析构函数以及引用的使用...
这并不相同于C语言中的指针,因为PHP的引用实际上是符号表的别名,变量名和变量内容是分开的,内容可以有不同的名字。这可以用Unix文件系统中的硬链接来作比较,即不同的文件名可以链接到同一个文件。 引用的使用...
这个“xp下apache2+php5二进制包+php5源码包”提供了一套完整的解决方案,包括预编译的二进制文件和原始源代码,使得用户能够在XP环境下快速启动并运行PHP服务,同时也支持使用Visual C++进行PHP的C扩展开发。...
本主题将详细介绍如何在Source Insight中设置和使用PHP语言支持,以及相关的风格文件。 首先,让我们理解"PHP Language && Style files for Source Insight"这一描述。这表明存在特定的配置文件和样式设置,使得...
在PHP编程语言中,引用计数器和垃圾回收机制是两个关键的概念,它们与变量的生命周期和内存管理密切相关。PHP是一种动态类型的语言,其变量的行为和内存管理方式与其他语言有所不同,尤其是在处理引用和数据结构时。...
2. 类与对象:在PHP5中,类定义了一组属性(变量)和方法(函数),对象是类的实例。类可以通过关键字`class`来定义,属性可以声明为公共、私有或保护,方法可以是静态的或非静态的。构造函数和析构函数用于对象的...
5.8 参数的引用传递和值传递 5.9 使用Return关键字 5.9.1 从函数返回一个值 5.10 实现递归 5.10.1 名称空间 5.11 进一步学习 5.12 下一章 第6章 面向对象的PHP 6.1 理解面向对象的概念 6.1.1 类和对象 ...
PHP引用传值是一种将一个变量标识符与另一个变量标识符绑定在一起的方式,使得这两个标识符能够访问同一个变量的值。通过使用引用操作符(&),PHP允许开发者创建指向同一数据的变量别名,而不是创建变量的副本。...
1. **空值检查变化**:在PHP5中,没有属性的对象不再被认为是“empty”。 2. **类定义规则**:在某些情况下,类必须在使用前被定义,特别是当涉及到接口等新特性时。 3. **函数包含**:函数定义在包含文件中的情况,...
PHP变量自增/减与变量引用 PHP 比较操作符 PHP 逻辑操作符 PHP 三元操作符 PHP 错误抑制操作符 PHP 执行操作符 PHP 数组操作符 PHP 操作符综合使用 PHP 条件判断/循环 PHP if语句 PHP else语句 PHP elseif语句 PHP ...