`
重庆PHP
  • 浏览: 5377 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

PHP4和PHP5中的引用&

PHP 
阅读更多
文章转载自重庆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中关于引用(&)详解.docx

    php中关于引用(&)详解 php中关于引用(&)详解 php中关于引用(&)详解

    php中引用&的用法分析【变量引用,函数引用,对象引用】

    本文实例分析了php中引用&的用法。分享给大家供大家参考,具体如下: php的引用(就是在变量或者函数、对象等前面加上&符号) //最重要就是 删除引用的变量 ,只是引用的变量访问不了,但是内容并没有销毁 在PHP 中...

    PHP变量引用(&)、函数引用和对象引用_.docx

    PHP变量引用(&)、函数引用和对象引用_.docx

    PHP5 完整官方 中文教程

    从 PHP 4 移植到 PHP 5 从 PHP 3 移植到 PHP 4 从 PHP/FI 2 移植到 PHP 3 PHP 的调试 配置选项 php.ini 配置选项 所支持时区列表 扩展库分类 函数别名列表 保留字列表 资源类型列表 支持的协议/封装协议列表 可用...

    PHP和MySQL Web开发第4版pdf以及源码

    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网页实例版)

    PHP变量自增/减与变量引用 PHP 比较操作符 PHP 逻辑操作符 PHP 三元操作符 PHP 错误抑制操作符 PHP 执行操作符 PHP 数组操作符 PHP 操作符综合使用 PHP 条件判断/循环 PHP if语句 PHP else语句 PHP elseif语句 PHP ...

    SQL Server Driver for PHP 3.0 rar格式

    3)在php ini配置文件内引用相应的动态链接库文件 extension php sqlsrv 52 ts vc6 dll extension php pdo sqlsrv 52 ts vc6 dll extension php pdo dll 4 重启Apache 5 连接数据库">本人提供的是 rar格式 ...

    php5中文手册20111124

    从 PHP 4 移植到 PHP 5 杂类问题 附录 PHP 及其相关工程的历史 Migrating from PHP 5.3.x to PHP 5.4.x 从 PHP 5.2.x 移植到 PHP 5.3.x Migrating from PHP 5.1.x to PHP 5.2.x Migrating from PHP 5.0.x to PHP 5.1...

    PHP和MySQL WEB开发(第4版)

    5.8 参数的引用传递和值传递 5.9 使用Return关键字 5.9.1 从函数返回一个值 5.10 实现递归 5.10.1 名称空间 5.11 进一步学习 5.12 下一章 第6章 面向对象的PHP 6.1 理解面向对象的概念 6.1.1 类和对象 6.1.2 多态...

    php官方中文帮助手册

    ■从 PHP 4 移植到 PHP 5 ■杂类问题 ■附录■PHP 及其相关工程的历史 ■Migrating from PHP 5.3.x to PHP 5.4.x ■从 PHP 5.2.x 移植到 PHP 5.3.x ■Migrating from PHP 5.1.x to PHP 5.2.x ■Migrating from PHP ...

    PHP程序设计第2版

    第4章 函数 第5章 数组 第6章 面向对象的PHP 第7章 高级OOP特性 第8章 错误和异常处理 第9章 字符串和正则表达式 第10章 处理文件和操作系统 第11章 PEAR 第12章 日期和时间 第13章 PHP 5.1 第14章 表单和导航提示 ...

    PHP5最新中文手册CHM(2013年10月更新)

    ■从 PHP 4 移植到 PHP 5 ■杂类问题 ■附录 ■PHP 及其相关工程的历史 ■从 PHP 5.4.x 迁移到 PHP 5.5.x ■从 PHP 5.3.X 迁移到 PHP 5.4.X ■从 PHP 5.2.x 移植到 PHP 5.3.x ■Migrating from PHP 5.1.x to PHP 5.2...

    最新PHP中文手册7月1号php_manual_zh.part3.rar

    ■从 PHP 4 移植到 PHP 5 ■杂类问题 ■附录 ■PHP 及其相关工程的历史 ■从 PHP 5.2.x 移植到 PHP 5.3.x ■Migrating from PHP 5.1.x to PHP 5.2.x ■Migrating from PHP 5.0.x to PHP 5.1.x ■从 PHP 4 移植到 PHP...

    PHP5与MySQL5从入门到精通.rar

    第1章 PHP 5基础 1.1 简介 1.1.1 PHP是什么 1.1.2 初步认识PHP代码 1.2 PHP的安装 1.2.1 Linux下安装.Apache和PHP 1.2.2 Windows下安装Apache和PHP 1.3 PHP配置 1.3.1 PHP配置文件 1.3.2 PHP常用配置选项 ...

    PHP学习手册(PHP知识大全)

     在 PHP4 中,当函数与对象同名时,这个函数将成为该对象的构造函数,并且在 PHP4 中没有析构函数的概念。  在 PHP5 中,构造函数被统一命名为 __construct,并且引入了析构函数的概念,被统一命名为 __destruct...

    PHP官方正版中文帮助手册

     从 PHP 4 移植到 PHP 5  类与对象(PHP 4)  PHP 的调试  配置选项  php.ini 配置选项  扩展库分类  函数别名列表  保留字列表  资源类型列表  可用过滤器列表  所支持的套接字传输器(Socket ...

    php帮助文档,php。chm,php必备的中文手册

    60. 从 PHP 4 移植到 PHP 5 61. 杂类问题 IX. 附录 A. PHP 及其相关工程的历史 B. 从 PHP 4 移植到 PHP 5 C. 从 PHP 3 移植到 PHP 4 D. 从 PHP/FI 2 移植到 PHP 3 E. PHP 的调试 F. 配置选项 G. php.ini 配置选项 H....

    php中引用符号(&)的使用详细介绍

    与C语言中的指针是有差别的.C语言中的指针里面存储的是变量的内容在内存中存放的地址变量的引用. PHP 的引用允许你用两个变量来指向同一个内容 $a="ABC"; $b =&$a; echo $a;//这里输出:ABC echo $b;//这里输出:...

    PHP5中文参考手册

    从 PHP 4 移植到 PHP 5 从 PHP 3 移植到 PHP 4 从 PHP/FI 2 移植到 PHP 3 PHP 的调试 配置选项 php.ini 配置选项 所支持时区列表 扩展库分类 函数别名列表 保留字列表 资源类型列表 支持的协议/封装协议列表 可用...

Global site tag (gtag.js) - Google Analytics