php默认为传值传递:

既:

$a=10;
$b=$a; //$b为10
$a=+10; //$a 为20

echo $a.'和'.$b;  # $a is 20 and $b is 10!

要是想变为地址传递需要加&,既:

$a=10;
$b=&$a;
$a=+10;
echo $a.'和'.$b; # $a is 20 and $b is 20 too!

值传递只是将变量的内容复制一份而已,函数进行操作的其实是另一个变量,只是另一个变量的值和传递的变量值是相同的。例如上面例子中的$a和$b只是两个变量的值是相同的。

而地址传递是直接把变量的地址传递给函数,这时函数是直接对原来的变量进行操作的。所以值会变化。例如$b=&$a,是将$a的地址也传递给了$b,所以当$a的值发生了变化的时候,被传入变量地址的$b的值,也同时发生了变化。

举例说吧:值传递就相当于克隆了一个同样的变量,操作的是克隆出来的那个,原来的变量没有变化,但是地址传递是直接对原来的变量进行操作,没有克隆新的变量,这相当于变量只有一个。

也可以这样理解:比如要考试了,你有一份复习题,值传递就相当于别人借你的试卷去复印,然后在复印的那份上面做笔记,而地址传递就是别人直接在你原有的试卷上做笔记,没有复印,所以等你拿回来你会发现自己的试卷乱七八糟的。

最新文章

  1. webpack 使用教程--实时刷新测试
  2. iOS的一些面试题分析总结(1)
  3. ik扩展支持Solr配置
  4. svn设置外网访问
  5. 密钥文件snk
  6. android之ExpandableListActivity
  7. BeanUtils No value specified for Date的解决方法
  8. 在sklearn上读取人脸数据集保存图片到本地
  9. 通过命令行连接oracle数据库/进入sql plus
  10. poj 2288 tsp经典问题
  11. [LeetCode258] Add Digits 非负整数各位相加
  12. 实验四 Android程序设计 实验报告
  13. 阿里、百度等多家公司Java面试记录与总结
  14. 初识Jmeter
  15. 【webpack学习笔记】a08-缓存
  16. 2.go的变量和常量
  17. mySQL explain解释
  18. secureCRT连接linux系统
  19. 常见pip方法
  20. 走进APICloud的世界 (1)

热门文章

  1. docker (2) 通用/镜像命令
  2. 成都Uber优步司机奖励政策(2月25日)
  3. 人脸检测库libfacedetection介绍
  4. 利尔达NB-IOT模组Coap数据AT+NMGS发送时返回-513的原因
  5. Linux 下获取本机IP
  6. shell 批量压缩指定目录及子目录内图片的方法
  7. 编译chromium时下载gn.exe时出错的解决方案
  8. 使用getid3获取音频文件信息
  9. VMWare Workstation新装CentOS 7无法联网解决办法
  10. 骰子涂色 (Cube painting,UVa 253)