php中的引用传值

php中文网
发布: 2016-06-23 13:24:09
原创
1642人浏览过

一、简单数据类型的的赋值为值传递,函数返回值赋值也是值传递。且php中引用采用的是“写时拷贝”的原理,就是除非发生写操作,指向同一个地址的变量或者对象是不会被拷贝的。

通俗的讲 

    1:如果有下面的代码 

$a="ABC"; $b=$a;
登录后复制

magento(麦进斗)
magento(麦进斗)

Magento是一套专业开源的PHP电子商务系统。Magento设计得非常灵活,具有模块化架构体系和丰富的功能。易于与第三方应用系统无缝集成。Magento开源网店系统的特点主要分以下几大类,网站管理促销和工具国际化支持SEO搜索引擎优化结账方式运输快递支付方式客户服务用户帐户目录管理目录浏览产品展示分析和报表Magento 1.6 主要包含以下新特性:•持久性购物 - 为不同的

magento(麦进斗) 0
查看详情 magento(麦进斗)

    其实此时 $a与$b都是指向同一内存地址 而并不是$a与$b占用不同的内存

立即学习PHP免费学习笔记(深入)”;

    2:如果在上面的代码基础上再加上如下代码

$a="EFG";
登录后复制

    由于$a与$b所指向的内存的数据要重新写一次了,此时Zend核心会自动判断 自动为$b生产一个$a的数据拷贝,重新申请一块内存进行存储

二、对象的赋值是引用传递,在方法定义和调用前都加上&操作符也会作为引用传递:

function &test(){     static $b=0;//申明一个静态变量     $b=$b+1;     echo $b;     return $b; }}$a=test();//这条语句会输出 $b的值 为1 $a=5; $a=test();//这条语句会输出 $b的值 为2$a=&test();//这条语句会输出 $b的值 为3 $a=5; $a=test();//这条语句会输出 $b的值 为6
登录后复制

三、当用 global关键字声明一个变量时,实际上建立了一个到全局变量的引用。也就是说下面两行的结果是相同的:

global $val;$var =& $GLOBALS["var"];/*当用unset($val)取消引用时,只是断开了变量名$var和 变量内容 之间的绑定,并不会销毁全局变量$GLOBALS["var"]*/
登录后复制


PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号